赞
踩
有时候我们需要对一排元素进行逐一选中,比如下面一个例子中,我们想要当点击一排按钮中的某一个时,利用下面的写法,都是只能弹出最后一个元素。
<body> <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> <button>按钮4</button> <button>按钮5</button> <script> var btns = document.getElementsByTagName('button'); for(var i=0;i<btns.length;i++){ btns[i].οnclick=function(){ alert('点击了第'+ i +'个按钮'); } } </script> </body>
结果,无论我点击哪一个按钮,都是第五个:
以上产生的原因是因为作用域的问题
解决办法1:利用闭包解决
将for循环改成以下方式便可:
for(var i=0;i<btns.length;i++){
(function(i){
btns[i].οnclick=function(){
alert('点击了第'+ i +'个按钮');
}
})(i)
}
解决办法2:利用es6语法解决
将 声明变量的方式从‘var ’
改成 ‘let’
便可。
如 var btns =》 let btns; var i =》 let i
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。