我正在遍历多个元素,我也想为其分配一个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
将在每个循环周期中都是唯一的,因此不会被覆盖(这就是为什么它会保留先前代码中的最新值)
干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句