javascript - 具有相同类名的多个元素的事件

标签 javascript

我有以下code:

var abbrs = document.getElementsByClassName("hover");
abbrs.onmouseover=function() {
     console.log(this);
};

当我将鼠标悬停在具有“hover”类的元素上时,它应该会触发,但它不起作用。 我做错了什么?

最佳答案

顾名思义,document.getElementsByClassName 返回一个元素列表,其中 hover 作为它们的类名,因此您可以这样做:

var i=0,
  len = abbrs.length,
  abbrs = document.getElementsByClassName("hover");

for( ; i < len ; i++){
    abbrs[i].addEventListener("mouseover", function(event){
        //...
    });
}

虽然它回答了问题,但就更好的编码实践而言,我们最好避免在循环中创建函数。所以更好的做法可能是这样的:

var i=0,
  len = abbrs.length,
  abbrs = document.getElementsByClassName("hover");

fnction addEvent(abbr){
    abbr.addEventListener("mouseover", function(event){
        //...
    });
}

for( ; i < len ; i++){
    addEvent(abbrs[i]);
}

关于javascript - 具有相同类名的多个元素的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053859/

相关文章:

javascript - 背景为颜色,背景为图像

javascript - 如何允许包含禁用词的词?

javascript - 如何将 addEventListener 与所有 HTML 按钮、复选框、单选、选择和 href 一起使用

javascript - Chrome 中的 jQuery 返回 "block"而不是 "inline"

javascript - 设置元素的 style.backgroundColor 在 IE8 中不起作用?

javascript - 火存储 : Multiple conditional where clauses

javascript - 开发实时协作绘图系统

javascript - 正则表达式在正则表达式测试器上工作但不适合我

Javascript框架流行度

c# - 通过表单将变量从 Javascript 传递到 C#?