猿问

为什么这个有时候用不了?

        window.onload = function () {
        	var lis=document.getElementsByTagName('li');
        	//alert(lis.length);
        	for(var i=0;i<lis.length;i++){
        		lis[i].onmouseover=function(){
        			alert(this.getElementsByTagName('div')[0]);
        		}
        	}
        }

如上代码,

比如第六行“this.getElementsByTagName('div')[0]”,

换成了li[i].getElementsByTagName('div')[0],

就会出错:li is not defined。

那么另外问一下,究竟是什么时候用this?

非常感谢!

飞天意大利面神兽
浏览 1332回答 1
1回答

刚毅87

鼠标移入事件是在 for 循环走完之后才执行的,所以此时 i= lis.length, 很明显 li[lis.length]不存在;所以此时得记录 i 的值,用 index. window.onload = function () {             var lis=document.getElementsByTagName('li');             //alert(lis.length);             for(var i=0;i<lis.length;i++){                 lis[i].index = i;                 lis[i].onmouseover=function(){                     alert(lis[this.index].getElementsByTagName('div')[0]);                 }             }         }谁调用这个函数, this 就指代谁.望采纳!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答