在循环中创建元素并使用不同的值

迪诺

我试图动态创建一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章