我有以下代码,使用以下命令向每个元素添加事件 addeventlistener
var x, y, z;
elm = elm.normalize();
if(!isobj(elm) && iselm(elm)) {
elm = new Array(elm);
}
for(x in elm) {
(function() {
elm[x].addEventListener('click', function() {
alert(x);
});
})();
}
但是当我单击element
通过循环添加事件的任何事件时,它总是显示最后一个索引example
。就像当我单击element
它时,它会example
在警报框中显示带有文本的警报。
这里是结果console.log(elm)
后elm = elm.normalize()
[样本:input.sample.fld,例如:input.example.fld]
isobj(elm)
是一个function
检查是否variable
是一个object
,就像iselm(elm)
是一个function
检查是否variable
是一个element
。
由于要解决此问题,我试图(function() { /* i put the addEventListener as above */ })();
在循环内使用,但仍然无法正常工作。
我已经确保x
始终显示索引,但是我不知道为什么它始终显示事件中的最后一个索引。
请帮助,谢谢您的建议。
在执行该行代码时,for循环已完成。
有关说明:https : //dzone.com/articles/why-does-javascript-loop-only-use-last-value
let
如果您的浏览器支持,则可以使用。(有关说明和替代方法,请参见文章)
var x, y, z;
elm = elm.normalize();
if(!isobj(elm) && iselm(elm)) {
elm = new Array(elm);
}
for(x in elm) {
(function() {
let myX = x;
elm[myX].addEventListener('click', function() {
alert(myX);
});
})();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句