代码之家  ›  专栏  ›  技术社区  ›  Ehsan

向事件函数传递参数

  •  0
  • Ehsan  · 技术社区  · 15 年前

    看看这个简单的例子

    <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 完全!

    如何将变量从循环传递到函数?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Matthew Flaschen    15 年前

    这就是闭环问题。由于JavaScript只有函数作用域,所以所有鼠标指针都会关闭在同一个变量上。您可以通过创建一个新函数来修复它,从而创建一个新的作用域。

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