大神们帮帮忙..为什么for循环函数跟for循环函数里面的内容结果会不一样

DavidWongSssss 2018-01-23 10:03:04
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function(){
var button = document.getElementById("bbb").getElementsByTagName("button");
// function cc(i){
// button[i].onmouseover = function(){
// button[i].style.background = "royalblue";
// }
// button[i].onmouseout = function(){
// button[i].style.background = "#FFC125";
// }
// }
for(var i = 0;i < button.length;i++){
// cc(i);
button[i].onmouseover = function(){
button[i].style.background = "royalblue";
}
button[i].onmouseout = function(){
button[i].style.background = "#FFC125";
}
}
}
</script>
<style type="text/css">
.aaa ul{
text-decoration: none;
}
.aaa ul li{
display: inline;
}
.aaa ul li button{
width: 100px;
height: 50px;
margin: 50px;
background-color: #FFC125;
}
</style>
</head>
<body>
<div class="aaa" id="bbb">
<ul>
<li><button></button></li>
<li><button></button></li>
<li><button></button></li>
</ul>
</div>
</body>
</html>

for循环函数的话可以鼠标移动过去就会变成蓝色,鼠标移走就会变回黄色
如果直接for循环函数里面的内容,鼠标移过去不会有任何变化...........
但是函数里面同样的内容,为什么我不for循环函数,就不行呢
求各位大神为我解答下
...全文
303 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidWongSssss 2018-01-23
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
for循环中绑定事件,当事件真正的触发执行时,for循环早就结束了,这个时候循环变量i已经是循环最大值加1了。 而在函数内绑定事件会产生“闭包”,闭包会把每次循环i的值保存起来。 或者可以在事件函数内不使用循环变量i,而是用this获取触发事件的元素
谢谢你啊大神,被你一说就明白了,还特地去科普了一下this
天际的海浪 2018-01-23
  • 打赏
  • 举报
回复
for循环中绑定事件,当事件真正的触发执行时,for循环早就结束了,这个时候循环变量i已经是循环最大值加1了。 而在函数内绑定事件会产生“闭包”,闭包会把每次循环i的值保存起来。 或者可以在事件函数内不使用循环变量i,而是用this获取触发事件的元素
天际的海浪 2018-01-23
  • 打赏
  • 举报
回复
for循环中只是在绑定事件, 当事件真正的触发执行时,for循环早就结束了,这个时候循环变量i已经是循环最大值加1了。 而在函数内在绑定事件用产生“闭包”,闭包会把每次循环i的值保存起来。 或者可以在事件函数内不使用循环变量i,而是用this获取触发事件的元素

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧