zoukankan      html  css  js  c++  java
  • js的一个有意思的小题,闭包解决getElementByTagName的for循环绑定事件错误问题

    问: i 会输出什么?改写成闭包的写法?

    <a href="javaScript:void(0)">a</a>
    <a href="javaScript:void(0)">b</a>
    <a href="javaScript:void(0)">c</a>
    
    <script type='text/javascript'>
    var arr = document.getElementsByTagName('a');
    for(var i=0;i<arr.length;i++) {
        arr[i].onclick = function() {
            console.log(this + '我是第'+ i +'几个');
        }
    }
    </script>

     答:全部输出都是”我是第3个“

    闭包写法可解决问题

    <a href="javaScript:void(0)">a</a>
    <a href="javaScript:void(0)">b</a>
    <a href="javaScript:void(0)">c</a>
    
    <script type='text/javascript'>
    
    
    var arr = document.getElementsByTagName('a');
    for(var i=0;i<arr.length;i++) {
        (function(i,v){
           v.onclick = function() {
                console.log(this + '我是第'+ i +'');
            } 
        })(i,arr[i])
    }
    </script>
  • 相关阅读:
    62 ip与int类型的转换
    60再谈指针
    59任由制转换
    58进制转换工具
    吉哥工作
    apple
    找第一个非0元素的位置
    若干个数据之和 不考虑溢出
    汇编程序w=x*y+z-200
    4位bcd数转换为2进制数
  • 原文地址:https://www.cnblogs.com/liujinyu/p/5430869.html
Copyright © 2011-2022 走看看