javascript 向事件函数传递参数

eqqqjvef  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(145)

看看这个简单的例子:

<input type="button" value="btn1" id="btn1" />
<input type="button" value="btn2" id="btn2" />
<input type="button" value="btn3" id="btn3" />
<input type="button" value="btn4" id="btn4" />
<input type="button" value="btn5" id="btn5" />

<script>
    for (i=1; i<5; ++i){
        var btn = document.getElementById('btn' + i);
        btn.onmouseover = function(){
            alert(i);
        }
    }
</script>

我希望它应该警报,例如1当我移动我的鼠标在btn1上,但不幸的是,它警报5在所有!
如何将变量从循环传递到函数?

kpbpu008

kpbpu0081#

这是一个闭合循环的问题。所有的鼠标停留在同一个变量上,因为JavaScript只有函数作用域。你可以通过创建一个新的函数来修复它,这样就有了一个新的作用域。

for (i=1; i<5; ++i){
    (function(i)
    {
        var btn = document.getElementById('btn' + i);
        btn.onmouseover = function(){
            alert(i);
        }
    })(i);
}

相关问题