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

函数嵌套?

关于鼠标移动改变背景的方法:

1.慕课标准答案:

window.onload = function(){
		Highlight();
	 }
function Highlight(){
		var tbody = document.getElementById('table').lastChild;	
		trs = tbody.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";
			} 
		}  
	 }
2.大神同学的代码:
window.onload = function(){
          var tr=document.getElementsByTagName("tr");
          for(var i= 0;i<tr.length;i++)
          {
              bgcChange(tr[i]);
          }
function bgcChange(obj)
     {
        obj.onmouseover=function(){
            obj.style.backgroundColor="#f2f2f2";
        }
        obj.onmouseout=function(){
            obj.style.backgroundColor="#fff";
        }
	 }
前两种都能运行成功,有效果。
3.我的代码:
window.onload = function(){
          hightLight();
	 }
	 function hightLight(){
	 	var tr=document.getElementsByTagName("tr");
	 	for(i=0;i<tr.length;i++){
	 		tr[i].onmouseover=function(){
	 			
	 			tr[i].style.backgroundColor="red";
	 		}
	 		tr[i].onmouseout=function(){
	 			tr[i].style.backgroundColor="#fff";
	 		}
	 	}
	 }
运行报错,说style是undefined。

不难对比得出,主要是tr[i].onmouseover=function(){ }这个函数中有所不同。1网站给的代码是用了this,暂且不论,2大神给的代码是传递了tr[i]进来颜色改变的函数,只不过换了个名字叫obj,但是感觉实质和我的代码一样的呀,为什么我的就运行不成功呢??

正在回答

2 回答

   window.onload = function(){

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

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

          {

              tr[i].onmouseover=function(){

            this.style.backgroundColor="#f2f2f2";

                }

            tr[i].onmouseout=function(){

            this.style.backgroundColor="#fff";

                }

         }


    }

这样就可以了

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

yyvan

求解为何是this 而tr[i]却不行
2016-04-22 回复 有任何疑惑可以回复我~
#2

新人沈琦斌 回复 yyvan

不知道你现在弄明白this 和obj以及tr[i]的区别了没?我现在也一点都不懂,能不能给我讲一讲?谢谢你
2016-04-25 回复 有任何疑惑可以回复我~

for循环的数组下角标从零开始,最后一位是tr[i].length-1,tr[i].length是不存在的,所以会提示未定义

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

举报

0/150
提交
取消

函数嵌套?

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