为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript进阶篇9-22 编程练习

  1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 。

    这里的代码为什么要用this,而不能是trs[i].style.backgroundColor = "#f2f2f2";


 window.onload = function(){

        var trs = document.getElementsByTagName('tr');

           for(var i = 1; i < trs.length; i++){

               trs[i].onmouseover = function(){

                     this.style.backgroundColor = "#f2f2f2";

               }

               trs[i].onmouseout = function(){

                     this.style.backgroundColor = "#fff";

                }

       }

        }

正在回答

1 回答

因为JS里的对象是全局的,如果使用trs[i],这里的i的值一直是走完循环后的值,也就是:trs.length的值,所以trs[i]一直为undefined

0 回复 有任何疑惑可以回复我~
#1

qq_泥巴的城_0 提问者

非常感谢!
2017-10-03 回复 有任何疑惑可以回复我~
#2

zhouqian

不好意思,之前我也是初学JS,虽然结论是对的,但是回答中说到的“JS对象是全局的”这句话是错误的。重新解释如下: 如果在function()函数内部使用函数外定义的局部变量会形成闭包,函数内访问外部变量获取到的值是最后一次修改后的值。也就是说i的值是trs.length,所以trs[i]一直为undefined
2017-10-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

JavaScript进阶篇9-22 编程练习

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信