使用onclick动态创建元素仅执行最后一个元素

用户名

我正在为同样动态创建的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")由于某种原因通过了

Code_Mode

这是由于关闭而发生的。使用let而不是varfor循环

for (let i = 0, size = listOfItems.length; i < size; i++)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章