Javascript 在onclick函数中为循环生成的元素传递值
我想为生成的链接向onClick函数传递一个参数(resultset中的字符串) 现在我有这个:Javascript 在onclick函数中为循环生成的元素传递值,javascript,onclicklistener,Javascript,Onclicklistener,我想为生成的链接向onClick函数传递一个参数(resultset中的字符串) 现在我有这个: for (var i=0; i<response.data.length; i++){ var attend= document.createElement("a"); var name = response.data[i].name; attend.innerHTML="Add event"; attend.addEventListener("
for (var i=0; i<response.data.length; i++){
var attend= document.createElement("a");
var name = response.data[i].name;
attend.innerHTML="Add event";
attend.addEventListener("click", function() {saveEvent(name);}, false);
document.getElementsByClassName("event")[i].appendChild(attend);
}
用于(var i=0;i这是因为正在围绕name
变量创建一个闭包。这使得该变量保存的数据在所有事件处理程序函数之间共享。您总是看到最后一个元素的name
的原因是,当循环完蛋了
您需要在每次循环迭代时传递该数据的副本。将代码更改为对变量声明使用而不是var
,以便在每次循环迭代时,name
将有自己的作用域
闭包可能是一个很难理解的概念。您可以阅读有关闭包的更多信息
for (var i=0; i<response.data.length; i++){
var attend= document.createElement("a");
let name = response.data[i].name;
attend.innerHTML="Add event";
attend.addEventListener("click", function() {saveEvent(name);}, false);
document.getElementsByClassName("event")[i].appendChild(attend);
}
for(var i=0;我非常感谢你,这肯定解决了我的问题!我没有太多时间来优化性能,但我会在完成后再看一看!