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

为什么这两段代码不一样?求解

 //第一种

     window.onload = function(){

      var td=document.getElementsByTagName("td");

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


            td[i].onmouseover=function(){

            td[i].style.backgroundColor="#f2f2f2";

            }

            td[i].onmouseout=function(){

            td[i].style.backgroundColor="#fff";}

            }

}

//第二种

   window.onload = function(){

        var td=document.getElementsByTagName("td")

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

        bgchange(td[i]);

        }

       }

function bgchange(obj){

        obj.onmouseover=function(){

        obj.style.backgroundColor="#f2f2f2";}

        obj.onmouseout=function(){

        obj.style.backgroundColor="#fff";

        }

   }


正在回答

2 回答

有点意思- -第二种漏了个符号,还有没有吧bgchange这个函数写在里面(不是指for里面)

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

慕圣9424722 提问者

第二段没漏符号哦, 有一个}没有换行, 第一段运行没效果,第二段有效果,在第二段window.onload里 bgchange(td[i])已经调用了函数了,函数写在里外都一样的
2017-08-23 回复 有任何疑惑可以回复我~
#2

我要SSR 回复 慕圣9424722 提问者

第二段第一个声明后面没;号,第一段忘了说td[i].style.backgroundColor="#f2f2f2";的td[i]换成this。。。你需要操作的是对象不是元素
2017-08-23 回复 有任何疑惑可以回复我~
#3

我要SSR 回复 慕圣9424722 提问者

关于调用函数这个还是写进去好点。。。
2017-08-23 回复 有任何疑惑可以回复我~
#4

我要SSR 回复 我要SSR

好像说错了- -后面那句话忽略掉- -
2017-08-23 回复 有任何疑惑可以回复我~
#5

我要SSR 回复 我要SSR

你需要操作的是对象不是元素 这句错了不好意思
2017-08-23 回复 有任何疑惑可以回复我~
#6

慕圣9424722 提问者 回复 我要SSR

改为this是对的,这个this为什么不能用td[i]还是有点不理解,是在函数中所有的对象应该都是this吗?
2017-08-23 回复 有任何疑惑可以回复我~
#7

慕圣9424722 提问者 回复 慕圣9424722 提问者

如果是在函数外td[i].style.backgroundColor="#f2f2f2";应该没问题吧,好像前几章节里就是这样写的
2017-08-23 回复 有任何疑惑可以回复我~
#8

拥牙令 回复 慕圣9424722 提问者

虽然已经没有积分了但是我来告诉你吧,由于js的闭包性,i的值并没有传进去~
2017-08-23 回复 有任何疑惑可以回复我~
查看5条回复

第一段代码运行没有结果,第二段是有结果的,请问第一段代码问题在哪里

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

举报

0/150
提交
取消

为什么这两段代码不一样?求解

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