Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用onclick动态创建元素只执行最后一个元素_Javascript_Html_Dynamic - Fatal编程技术网

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

Javascript 使用onclick动态创建元素只执行最后一个元素,javascript,html,dynamic,Javascript,Html,Dynamic,我正在为动态创建的html元素动态创建onclick事件。我可以使元素很好,但是当我单击一个特定的元素时,它总是对最后创建的元素运行onclick var parentNode = document.getElementById('mpacks'); parentNode.innerHTML = ''; for (var i = 0, size = listOfItems.length; i < size; i++){ var listNode = document.cre

我正在为动态创建的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])};
}
var parentNode=document.getElementById('mpacks');
parentNode.innerHTML='';
for(var i=0,size=listOfItems.length;i

例如:如果我有列表
[link1,link2,link3]
,我会很好地呈现它们,它们都会显示在我的页面上。当我单击链接1时,我希望它被传递到onclick函数中,如图所示<代码>插入参数(“link1”)
。相反,当我单击link1时,出于某种原因,它传入了insertParam(“link3”)。

这是因为关闭。在for循环中使用
let
而不是
var

for (let i = 0, size = listOfItems.length; i < size; i++)
for(设i=0,size=listOfItems.length;i
它成功了。非常感谢。