首页 > 代码库 > 写js的一些思路及问题 采集
写js的一些思路及问题 采集
1利用循环给元素添加事件(例子:点击li,弹出当前li 的索引)
错误案例:
1 <ul id="testUL"> 2 <li> index = 0</li> 3 <li> index = 1</li> 4 <li> index = 2</li> 5 <li> index = 3</li> 6 </ul> 7 <div id="box">123333</div> 8 <script> 9 var nodes = document.getElementsByTagName("li"); 10 for(i = 0;i<nodes.length;i++){ 11 console.log(nodes[i]); // 可以循环打印。。。 12 nodes[i].onclick = function(){ 13 // onsole.log(nodes[i]); //undefined 14 console.log(i);//值全是4 15 }; 16 } 17 var box = document.getElementById("box"); 18 for(var j=0; j<5;j++){ //循环完成之后,才触发的事件。 19 box.onclick = function () { 20 console.log(j); // 21 } 22 } 23 </script>
用闭包解决上述问题(正确案例)
1 <ul id="testUL"> 2 <li> index = 0</li> 3 <li> index = 1</li> 4 <li> index = 2</li> 5 <li> index = 3</li> 6 </ul> 7 <script> 8 //循环绑定事件的时候闭包也很有用,关于闭包有个很经典的例子 9 var add_the_handlers = function(nodes){ 10 var helper = function(i){ 11 return function(e){ 12 alert(i); 13 }; 14 }; 15 for(var i = 0;i<nodes.length;i++){ 16 nodes[i].onclick = helper(i); //估计是点击的当前再传的值 17 } 18 }; 19 add_the_handlers(document.getElementsByTagName("li")); 20 </script>
写js的一些思路及问题 采集
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。