zoukankan      html  css  js  c++  java
  • js,addEventListener参数传递

    解决方法

    因为i相对匿名函数是外面的变量,就把循环绑定的时候,将i的值传入到匿名函数内,就可以了。因此需要在匿名函数(事件函数)外包裹一个匿名函数, 并立即执行


    var elems = document.getElementsByTagName('a'); for (var i = 0; i < elems.length; i++) { elems[i].addEventListener('click', (function (num) { return function (e){ e.preventDefault(); alert('I am link #' + num); } })(i), 'false'); };

    如果执行点击事件的时候,最终的事件函数外层因为立即执行的匿名函数,函数体内已经存在了num变量,而这个num变量是每次循环的时候传入的i

    另外一种解决方法没有用到闭包,而是给每个对象添加一个属性

    var elems = document.getElementsByTagName('a');
    for (var i = 0; i < elems.length; i++) {
        elems[i].num = i;
        elems[i].addEventListener('click', function (e) {
            e.preventDefault();
            alert('I am link #' + this.num);
        }, 'false');
    
    };
  • 相关阅读:
    Linux文件和目录管理常用重要命令
    Windows和Linux下Mysql 重置root 密码
    瀑布流vue-waterfall的高度设置
    vue-cli 引入axios及跨域使用
    Vue 脱坑记
    shell基础
    正则
    安装卸载
    压缩打包
    vim工具
  • 原文地址:https://www.cnblogs.com/wqing/p/4744611.html
Copyright © 2011-2022 走看看