window.inload=function(){
var oMove=document.getElementById('move');
var aList=oMove.getElementsByTagName('a');
for(var i=0;i<aList.length;i++){
aList[i].onmouseover=function(){
var _this=this.getElementsByTagName('i')[0];
startMove(_this,{top:-25,opacity:0},function(){
_this.style.top=30+'px';
startMove(_this,{top:25,opacity:100})
});
}
}
}
以上这段是老师的代码
for(var i=0;i<aList.length;i++){}
这个是遍历所有取到的a标签,所以获得的是一个数组,所以有了接下来的:
aList[i].onmouseover=function(){}
但是接下来的var _this=this.getElementsByTagName('i')[0];我不是很懂,为什么这里在当前事件下,还要取第一个标签呢?
当i=1时,那么得到aList[1].onmouseover=function(){},也就是第二个a标签,这个时候为什么还要取
var _this=this.getElementsByTagName('i')[0],这里取到的不是第一个i标签吗,但是我们现在要的难道不是第二个i标签吗,不懂,求解答。。。
这快我也有问题,不过看了你们的解释之后貌似明白了,首先都是用的getElementsByTagName所以这获得都是一个数组,无论这个数组有多少元素,哪怕一个,他也是数组,回到楼主的问题当中,因为都是用的数组,所以要获取对象都是用[0]的,拙见。
当i=0 时,aList[i] 取到的是第一个 a 标记.
这个时候 var _this=this.getElementsByTagName('i')[0]; 中的_this 指的是第一个a中的 i 标记.
当i=1 时,aList[i] 取到的是第二个 a 标记.
这个时候 var _this=this.getElementsByTagName('i')[0]; 中的_this 指的是第二个a中的 i 标记.
并不是第一个i标记.
注意 var _this=this.getElementsByTagName('i')[0]; 这里面是this.getElementsByTagName('i')[0] 而不是document.getElementsByTagName('i')[0]. 两者取到的是不同的,后者取到的是整个文档中的i的第一个
前者是 this下的i的第一个,也就是第 i 个a中的 i标记的第一个.
getElementsByTagName 这个方法返回一个类似数组的对象,访问数组对象可以用下标来访问
【0】就是取其第一项,(注意是elements 那个S 说明是个数组类的)
getElementsByTagName返回的是一个集合。[0],表示获取传进来元素里面元素叫i的。