JavaScript进阶篇9-22 编程练习

来源:9-22 编程练习

qq_泥巴的城_0

2017-09-20 17:28

  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回答

  • zhouqian
    2017-09-25 17:29:54
    已采纳

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

    zhouqi...

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

    2017-10-20 10:52:10

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题