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

关于函数调用的问题

关于函数调用的问题

wyx0k 2016-05-15 15:07:09
<!DOCTYPE html><html> <head>  <title> new document </title>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>     <script type="text/javascript">       window.onload = function(){                var h=document.getElementsByTagName('tr');                for(i=0;i<h.length;i++){                h[i].setAttribute("onmouseover",'change()');                }         function change(){     this.style.backgroundColor="#f2f2f2";         }}  </script>  </head>  <body>    <table border="1" width="50%" id="table">   <tr> <th>学号</th> <th>姓名</th> <th>操作</th>   </tr>     <tr> <td>xh001</td> <td>王小明</td> <td><a href="javascript:;" >删除</a></td>      </tr>   <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:;" >删除</a></td>      </tr>     </table>   <input type="button" value="添加一行"  />    </body></html>为啥没反应呢。。。。。。。。。。。。。。。就是鼠标放上去会变色啊。。。
查看完整描述

6 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

  <script type="text/javascript"> 

      window.onload = function(){

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

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

                h[i].onmouseover=change;

                }

}

         function change(){

     this.style.backgroundColor="#f2f2f2";

         }

  </script> 


查看完整回答
4 反对 回复 2016-05-15
  • wyx0k
    wyx0k
    大神能详细教一下,为什么我那个不对吗?,用setAttribute给每个标签都加一个onmouseover事件为啥来调用change()为什么不可以呢?
?
慕娘9282524

TA贡献13条经验 获得超8个赞

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

                               h[i].onmouseover=change;


添加事件  和添加属性 不一样



查看完整回答
1 反对 回复 2016-05-15
?
暗域天堂

TA贡献27条经验 获得超13个赞

C语言函数的定义不能嵌套,函数的调用可以嵌套。

查看完整回答
反对 回复 2016-05-21
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

 <script type="text/javascript"> 

      window.onload = function(){

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

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

                h[i].setAttribute("onmouseover",'change.apply(this)');

                }

}

         function change(){

     this.style.backgroundColor="#f2f2f2";

         }

  </script> 


查看完整回答
反对 回复 2016-05-15
  • wyx0k
    wyx0k
    啊,大神我查了一下apply的作用是继承对象,那么我有个不明白的地方如果不这么做(继承对象)那么一开始我错的那个change()里面的this指的是谁?是setAttribute吗?
  • qq_青枣工作室_0
    qq_青枣工作室_0
    你的this指向window。具体内容,你百度一下。
  • 甫里
    甫里
    因为你的change()在全局作用域下,一般可以理解为window,所以this指向window,this是个坑~理解透彻需要花时间和实践
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

  <script type="text/javascript"> 

      window.onload = function(){

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

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

                h[i].setAttribute("onmouseover",'change(this)');

                }


}

         function change(self){

     self.style.backgroundColor="#f2f2f2";

         }

  </script>


查看完整回答
反对 回复 2016-05-15
  • wyx0k
    wyx0k
    哦哦果然是作用域不对吗,得用this传递一个对象?
  • qq_青枣工作室_0
    qq_青枣工作室_0
    注意,还要把function change(){} 放到最外层,你的代码是放到window.onload(){}里面了。
  • wyx0k
    wyx0k
    是因为change不传一个对象,那么function change()里面的this就是setAttribute,对吗
点击展开后面1
  • 6 回答
  • 0 关注
  • 1610 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信