//html代码
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
//js代码
var oli = document.getElementsByTagName("li");
for(var i=0; i<oli.length; i++){
oli[i].onclick = function () {
alert(i);
};
这里输出 2
因为 i 是全局变量,执行 for 循环后 i 值为 2。所以触发事件后的 i 仍为 2。
如果想要输出当前触发事件的 i,需要这样写
var oli = document.getElementsByTagName("li");
for(var i=0; i<oli.length; i++){
(function(j){
oli[j].onclick = function () {
alert(j);
};
})(i)
}
这里在循环过程中把 i 当做参数传入匿名函数中,然后立刻执行该函数。
所以每个函数中的 j 就是当前的 i
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于