for循环中使用setInterval,怎么把i值传进去

qq_38216500 2017-04-07 10:40:48
var lis=document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].index=i;
lis[i].onmouseover=function(){
for(var i=0;i<lis.length;i++){
lis[i].style.width='100px';
}
timer=setInterval(function(){
lis[this.index].style.width='700px';
},500);
}
}
为什么在lis[this.index].style.width='700px';这样不行?
在setInterval里面应该怎么改lis[this.index]呢?
...全文
254 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
-heyujun 2017-04-07
  • 打赏
  • 举报
回复
已经解决了。 var lis=document.getElementsByTagName('li'); for(var i=0;i<lis.length;i++){ lis[i].index=i; lis[i].onmouseover=function(){ var _this=this; for(var i=0;i<lis.length;i++){ lis[i].style.width='100px'; } timer=setInterval(function(){ lis[_this.index].style.width='700px'; },500); } } 因为在setInterval中,this指向window,只要在函数内把this的值赋值给_this变量即可。

87,910

社区成员

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

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