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>
  • 相关阅读:
    求逆元算法
    Almost Sorted Array
    最长不递减子序列
    (LIS)最长上升序列(DP+二分优化)
    rabbitmq延迟消息
    oracle 视图
    oracle 存储过程
    http 会话(session)详解
    系统测试
    Fiddler 手机抓包
  • 原文地址:https://www.cnblogs.com/liujinyu/p/5430869.html
Copyright © 2011-2022 走看看