this为何不能用li[i]取代,this.indes为何不能用i取代?

来源:10-1 编程挑战

Sinoproud

2016-04-04 20:28

window.onload=function(){
	var ul1=document.getElementById('ul1');
	var li=ul1.getElementsByTagName('li');
	var tab=document.getElementById('tab-list');
	var div=tab.getElementsByTagName('div');
	for(var i=0;i<li.length;i++){
		li[i].index=i;
		li[i].onmouseover=function(){
			for(var j=0;j<li.length;j++){
				li[j].className="";
				div[j].className="hide";
			}
			this.className="active";
			div[this.index].className="show";
		}
	}
}


写回答 关注

2回答

  • zray
    2016-04-05 14:05:11
    已采纳

    因为this代表是当前触发的这个对象;在onmouseover加载后,方法体中不存在i这个变量,并且在这个页面加载时,变量i已经循环完毕,因此才需要赋值给li[i].index保存下来。

    Sinopr...

    谢谢您!

    2016-04-05 15:02:50

    共 1 条回复 >

  • 努力奋斗的小黄人
    2016-04-05 09:52:58

    因为在function(){}中,i是没有定义的,不信你可以试试,在其中打印i看看,这涉及到作用域,所以需要用this

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题