我正在为同样动态创建的html元素动态创建一个onclick事件。我可以将元素设置得很好,但是当我单击一个特定的元素时,无论最后创建的元素是什么,它都会始终运行onclick。
var parentNode = document.getElementById('mpacks');
parentNode.innerHTML = '';
for (var i = 0, size = listOfItems.length; i < size; i++){
var listNode = document.createElement('LI');
var tmp = document.createElement('a');
tmp.id = listOfItems[i];
tmp.innerText = listOfItems[i];
listNode.appendChild(tmp);
parentNode.appendChild(listNode);
tmp.onclick = function() {insertParam(listOfItems[i])};
}
例如:如果我有列表[link1, link2, link3]
,则将它们渲染得很好,它们都将显示在我的页面上。当我单击链接1时,我希望将其传递给onclick函数,如图所示……insertParam("link1")
。相反,当我单击link1时,由于某种原因它会传入insertParam("link3")
。
答案 0 :(得分:2)
这是由于关闭而发生的。在循环中使用$_GET['srcid']
代替let
var