<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
</body>
<script type="text/javascript">
var btns=document.getElementsByTagName("button")
/*遍历监听*/
//出现问题
/*for(var i=0,Length=btns.length;i<Length;i++){
var btn=btns[i]
console.log(i)
btn.onclick=function(){
alert("第"+(i+1)+"个")
}
}*/
//解决方法1:将btn所对应的下标保存到btn上
/* for(var i=0,Length=btns.length;i<Length;i++){
var btn=btns[i]
btn.index=i
console.log(i)
btn.onclick=function(){
alert("第"+(this.index+1)+"个")
}
}*/
//解决方法2:利用闭包
for(var i=0,Length=btns.length;i<Length;i++){
(function(i){
var btn=btns[i]
console.log(i)
btn.onclick=function(){
alert("第"+(i+1)+"个")
}
})(i)
}
</script>
</html>
JS一个经典的问题:在遍历数组时对DOM监听事件,索引值将始终等于遍历结束后的值
最新推荐文章于 2021-12-10 09:50:08 发布