Javascript 在()上的jquery中使用for循环的索引值将给出结束索引

Javascript 在()上的jquery中使用for循环的索引值将给出结束索引,javascript,jquery,Javascript,Jquery,在.onclick函数{}中使用current for循环值时,实际使用的值是for循环的中断条件值 var arr =["S","d","f"]; for(i=0;i<arr.length;i++) { $("#sng"+i).on("click",function(){ console.log(i); //is always 3 console.log(arr[i]); //is undefined as array doesnt

在.onclick函数{}中使用current for循环值时,实际使用的值是for循环的中断条件值

var arr =["S","d","f"];

for(i=0;i<arr.length;i++)
{

$("#sng"+i).on("click",function(){
            console.log(i);  //is always 3
            console.log(arr[i]);  //is undefined as array doesnt have index 3 
        });
如果数组有4个元素,那么console.logi始终为5等

选择器工作正常,因为这就是我使用for循环创建div并分配id=sng+i的方式。 为什么会发生这种情况,以及如何使用当前的i值

我的元素都是动态创建的。

保持i为局部变量肯定是一个很好的方法:

var arr=[S,d,f]; arr.forEachv,i=> {$sng+i.onclick,函数{ console.logi; console.logv; }; };
这是一个范围界定问题。无论您单击什么,我都将被读取为全局值。而是使用事件的值:

var arr=[S,d,f]; 对于i=0;i