简体   繁体   English

OnClick或OnHover事件监听javascript中的所有IMG

[英]OnClick or OnHover Event Listen For All IMG in javascript

I have a list of images I would like to listen for click actions or hover actions on any "img" on my page regarless of ID. 我有一个图像列表,我想听我页面上任何不带ID的“ img”上的点击操作或悬停操作。 And I want to use regular javascript and be friendly with modern browsers. 而且我想使用常规的javascript并与现代浏览器保持友好。

I have done a lot of research and reading but I have yet to find a solution. 我已经做了很多研究和阅读,但是还没有找到解决方案。 I am thinking that my code might look something like this but I'm not positive: 我认为我的代码可能看起来像这样,但我不是很肯定:

var allimg = document.getElementsByTagName('img');
for(var i = 0; i < allimg.length; ++i) {
   // do something
}

How do I add onlick to this, do I need to call it as a function on pageload? 如何添加onlick,是否需要在页面加载时将其作为函数调用? how do I have the javascript react to all img tags when clicked? 单击时,如何使javascript对所有img标签做出反应?

Use event delegation: 使用事件委托:

document.getElementsByTagName('body')[0].onclick = function (event) {
    if (event.target.nodeName === "IMG") {
        console.log('do something');
    }
} 

Fiddle 小提琴

any chance you might have jQuery? 您可能有jQuery吗? If so... 如果是这样的话...

$(img).on('click',function(e){
  console.log('rad')
});

otherwise.. you are on the right track. 否则,您就走对了。 Untested but this should get you there... 未经测试,但这应该可以帮助您...

function clickHandler(e){
  console.log('I love goats')   
}

var allimg = document.getElementsByTagName('img');
for(var i = 0; i < allimg.length; ++i) {
  allimg[i].onclick = clickHandler;
}

No use adding listeners to every element. 将监听器添加到每个元素都没有用。 Try this inside your loop. 在循环内尝试一下。 allimg[i].onclick/onmouseover = function(){//your code}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM