我正在遍历多个元素,我也想为其分配一个onclick事件处理程序。
问题在于发送到goTo函数(事件处理程序)的元素始终是循环中的最后一个元素。我究竟做错了什么?
var navLinks = document.getElementsByClassName('navigation');
for (var i = 0; i < navLinks.length; i++) {
var navLink = navLinks[i];
navLink.onclick = function() { goTo.call(navLink); }
}
最佳答案
您应该添加一个闭包,如下所示:
var navLinks = document.getElementsByClassName('navigation');
for (var i = 0; i < navLinks.length; i++) {
var navLink = navLinks[i];
(function(navLink){ //This line does the magic
navLink.onclick = function() { goTo.call(navLink); }
})(navLink); //This calls the created function
}
这样,内部
navLink
在每个循环周期中将是唯一的,因此不会被覆盖(这就是为什么它仍保留先前代码中的最新值的原因)干杯
关于javascript - 在onclick事件处理程序循环中设置当前元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21081750/