求教 for 循环 变量问题

skylaoyao 2015-05-21 05:09:16
新手求教
代码如下;
function setcolor(){
var objtrs=document.getElementById("bgc").tBodies[0].rows;
var bgcolor;
for(var i=0;i<objtrs.length;i++){
objtrs[i].bgColor=i%2?"orange":"olive";
}
//objtrs[i]放在for循环外面 显示未定义
objtrs[i].onmouseover=function(){
bgcolor=this.bgColor;
this.bgColor="cyan";
}
objtrs[i].onmouseout=function(){
this.bgColor=bgcolor;
}
}
for 循环 变量i 不是全局变量吗 为什么objtrs[i] 放在for循环外 显示undefined; 只有放进for循环 才有效果。
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
skylaoyao 2015-05-21
  • 打赏
  • 举报
回复
引用 1 楼 edfdfg 的回复:
那你把i放在外面,等执行完for的时候,那i的值不是等于objtrs.length了吗? 那肯定没有objtrs[objtrs.length]这个元素了, 数组的下标从0开始的,是0到 objtrs.length-1,你现在取objtrs[objtrs.length]肯定是 undefine了
放在外面 循环体结束 i值就是数组长度值,我还以为 变量 i 放在外面 也能自增 多谢。
小宝鸽 2015-05-21
  • 打赏
  • 举报
回复
for(var i=0;i<objtrs.length;i++){ objtrs[i].bgColor=i%2?"orange":"olive"; } 中的i是局部变量,其作用范围只在循环体内,改成如下方式就ok了: var i; for( i=0;i<objtrs.length;i++){ objtrs[i].bgColor=i%2?"orange":"olive"; }
阿狸Ahri 2015-05-21
  • 打赏
  • 举报
回复
那你把i放在外面,等执行完for的时候,那i的值不是等于objtrs.length了吗? 那肯定没有objtrs[objtrs.length]这个元素了, 数组的下标从0开始的,是0到 objtrs.length-1,你现在取objtrs[objtrs.length]肯定是 undefine了

87,910

社区成员

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

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