gpt4 book ai didi

javascript - 事件处理函数超出 for 范围

转载 作者:行者123 更新时间:2023-12-02 17:15:39 24 4
gpt4 key购买 nike

我的 for 循环内的处理程序可能超出范围,并且仅在控制台中打印“添加的最后一个事件”,但不会循环遍历数组中的每个元素。不知道我哪里出了问题,但我需要帮助将事件监听器附加到每个事件监听器。

(function () {
if (document.addEventListener) {
this.addEvent = function (elem, type, fn) {
elem.addEventListener(type, fn, false);
};
} else if (document.attachEvent) {
this.addEvent = function (elem, type, fn) {
var bound = function () {
return fn.apply(elem, arguments);
};
elem.attachEvent("on" + type, bound);
return bound;
};
}
if (document.getElementsByClassName) {
this.getClass = function (className) {
return document.getElementsByClassName(className);
};
} else if (document.querySelectorAll) {
this.getClass = function (className) {
return document.querySelectorAll("." + className);
};
}
var elem = getClass("images"),
display = getClass("display_box"),
rolloverImage = function (e) {
console.log("Event 'rolloverImage' triggered");
};
console.log(display);
console.log(elem);
console.log(elem.length);
for (var i = 0; i < elem.length; i++) {
document.addEvent(elem[i], "mouseover", rolloverImage);
if (i = elem.length) {
console.log("Last event added");
} else {
console.log("Event added to " + elem[i]);
}
};
})();

这里有 fiddle :http://jsfiddle.net/bNL5C/

最佳答案

如果您想要 addEvent函数在文档对象上使用 document.addEvent =不是this.addEvent =因为这就是将其放在全局对象 window

而且它不会循环遍历所有这些,因为您正在分配 ielem数组长度而不是比较。

if (i = elem.length) {

应该是

if (i == elem.length) {

因此,在循环的第一次迭代中会导致 i值为elem.lengthi以来现在不是< elem.length你的循环退出。

关于javascript - 事件处理函数超出 for 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com