我试图动态创建一个a
元素并将其设置为具有警报的单击功能。我熟悉JavaScript中的闭包,因此我知道我不能像直接调用它那样直接调用它,doc.onclick=function() {alert(i);}
因为它将具有last的值i
。因此我尝试立即调用该函数,但它也会立即弹出警报。我该如何解决这个问题?
for (var i=0; i < 5; ++i) {
var doc = document.createElement("a");
doc.innerHTML = i;
doc.onclick = function(i) {alert(i);}(i);
document.body.appendChild(doc);
}
您需要在此处的闭包中返回一个函数。正如您发现的那样,仅立即调用函数是行不通的。
for (var i=0; i < 5; ++i) {
var doc = document.createElement("a");
doc.innerHTML = i;
doc.onclick = function(i) {
return function(){alert(i);};
}(i);
document.body.appendChild(doc);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句