这样写为什么不对呢?麻烦各位了。

来源:9-22 编程练习

慕田峪5928195

2016-09-29 11:17

      window.onload = function(){

        var tr_change = document.getElementsByTagName("tr");

        

        for(var i =0;i<tr_change.length;i++){


            tr_change[i].setAttribute("onmouseover","function(){this.style.backgroundColor='#f2f2f2';}");

            tr_change[i].setAttribute("onmouseout","function(){this.style.backgroundColor=' #fff';}");

        }

     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。

        

     

 

}

这样子写就不行,为什么呢? 另外就是为什么不能把这里的this替换成tr_change[i]呢?这个this怎么用的,麻烦各位了,谢谢。

写回答 关注

2回答

  • 黑山头山大王
    2016-10-04 12:51:37

    this指的是当前对象,调用的函数对哪个对象起作用,里面的this就指代这个对象。在你的代码环境里相当于tr_change[i],用this指代当前对象,可以简化代码。

    慕田峪592...

    谢谢回复,thx

    2016-10-05 17:57:49

    共 2 条回复 >

  • Lowell_hao
    2016-09-29 16:23:09

    1、首先关于函数设置的问题,setAttribute("onmouseover","function(){this.style.backgroundColor='#f2f2f2';}");这样的写法相当于在移入行的时候定义了一个函数(而且定义错误,正确的函数定义function xxx(){}),函数不调用不执行,所以是错的

    2、关于this的问题,如果使用tr_change[i],当你调用的时候循环已经结束,假设你没有在其他位置对i做操作,i的值是tr_change.length,tr_change[i]的值是undefined,找不到当前对象,所以使用this指向当前对象

    慕田峪592...

    先表示感谢,但是还有一个问题,为什么这样就可以呢? tr_change[i].onmouseover=function(){this.style.backgroundColor='#f2f2f2';}; tr_change[i].onmouseout=function(){this.style.backgroundColor=' #fff';}

    2016-09-30 10:36:47

    共 1 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题