简体   繁体   English

无法将事件侦听器添加到数组元素

[英]Cannot add event listener to array elements

I want to add mouseover event to every link with linkLink class with JS. 我想将mouseover事件添加到带有JS的linkLink类的每个链接中。 Console gives an error - Cannot read property style of undefined . 控制台给出错误- Cannot read property style of undefined Whenever I set index manualy like - l[0].addEventListener(...) it works fine, but not with variable i . 每当我手动设置索引,例如l[0].addEventListener(...)它都可以正常工作,但不适用于变量i Any help? 有什么帮助吗?

var l = document.getElementsByClassName('linkLink');

for (var i = 0; i < l.length; i++) {
    l[i].addEventListener("mouseover", function() { l[i].style.backgroundColor = "black"; });
        if ((i % 2) === 0) l[i].style.color = "crimson";
        else l[i].style.color = "gold";
}
<a class="linkLink" href="#">link I</a><br>
<a class="linkLink" href="#">link II</a><br>
<a class="linkLink" href="#">link III</a><br>

Use this instead of li[i] in the handler function. 在处理程序函数中使用this代替li[i]

 var l = document.getElementsByClassName('linkLink'); for (var i = 0; i < l.length; i++) { l[i].addEventListener("mouseover", function() { this.style.backgroundColor = "black"; }); //return back to original background color on mouseleave. l[i].addEventListener("mouseleave", function() { this.style.backgroundColor = "white"; }); if ((i % 2) === 0) l[i].style.color = "crimson"; else l[i].style.color = "gold"; }; 
 <a class="linkLink" href="#">link I</a><br> <a class="linkLink" href="#">link II</a><br> <a class="linkLink" href="#">link III</a><br> 

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

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