javascript addEventListener无法正常工作

史黛西

我正在研究一些常见的javascript程序。下一个向DOM添加了4个按钮,并向每个按钮添加了一个事件侦听器

for(var i =0;i<5;i++){
    var btn = document.createElement('button');
    btn.appendChild(document.createTextNode('Button' + i));

    //function 1
    (function(i){
     btn.addEventListener('click', function(){console.log(i)});
     })(i);

    //function 2 commented
    /*btn.addEventListener('click', (function(i){
     return function(){
     console.log(i);
     }
     })(i));*/

    document.body.appendChild(btn);
}

功能1和功能2都将事件侦听器添加到按钮上,并且可以正常工作。我想知道为什么下面的代码没有:-

for(var i =0;i<5;i++){
    var btn = document.createElement('button');
    btn.appendChild(document.createTextNode('Button' + i));

    btn.addEventListener('click', function(){
        console.log('Clicked' + i);
    });
    document.body.appendChild(btn);
}

该代码只需为每个单击按钮记录5。为什么会这样,我不明白为什么它不仅仅为每个循环保存i的值?

brk

addEventListener添加到eventTarget正在处理for循环的那一刻时,它不会触发侦听器。

它是在稍后阶段触发的,此时,for-loop它已完成执行并更新了的值i

当您在内部创建函数时,for-loop它会创建一个闭包并绑定的值i

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javascript addEventListener无法正常工作

来自分类Dev

[JavaScript]为什么进度条addeventlistener无法正常工作?

来自分类Dev

javascript addEventListener无法正常运行

来自分类Dev

JavaScript无法正常工作

来自分类Dev

.then()JavaScript无法正常工作

来自分类Dev

Javascript!==“”无法正常工作

来自分类Dev

addEventListener无法正常工作

来自分类Dev

addEventListener 无法正常工作

来自分类Dev

Javascript classList无法正常工作

来自分类Dev

javascript onclick无法正常工作?

来自分类Dev

javaScript吊起无法正常工作

来自分类Dev

JavaScript clearTimeout无法正常工作

来自分类Dev

JavaScript .replace()无法正常工作

来自分类Dev

JavaScript继承无法正常工作

来自分类Dev

在Javascript中,“ this”无法正常工作

来自分类Dev

.replace javascript无法正常工作

来自分类Dev

JavaScript比较无法正常工作

来自分类Dev

javascript onsubmit无法正常工作

来自分类Dev

Javascript关闭无法正常工作

来自分类Dev

Javascript indexOf无法正常工作

来自分类Dev

JavaScript单击无法正常工作

来自分类Dev

JavaScript concat()无法正常工作

来自分类Dev

javascript onblur()无法正常工作

来自分类Dev

Javascript appendChild()无法正常工作。

来自分类Dev

JavaScript代码无法正常工作

来自分类Dev

外部javascript无法正常工作?

来自分类Dev

JavaScript滑块无法正常工作

来自分类Dev

JavaScript“ keydown”无法正常工作

来自分类Dev

Javascript appendChild无法正常工作