看看这个简单的例子
<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
btn1
5
如何将变量从循环传递到函数?
这就是闭环问题。由于JavaScript只有函数作用域,所以所有鼠标指针都会关闭在同一个变量上。您可以通过创建一个新函数来修复它,从而创建一个新的作用域。
for (i=1; i<5; ++i){ (function(i) { var btn = document.getElementById('btn' + i); btn.onmouseover = function(){ alert(i); } })(i); }