看看这个简单的例子:
<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条答案
按热度按时间kpbpu0081#
这是一个闭合循环的问题。所有的鼠标停留在同一个变量上,因为JavaScript只有函数作用域。你可以通过创建一个新的函数来修复它,这样就有了一个新的作用域。