问答详情
源自:7-1 JS动画案例

下面这段代码不懂啊,求解答啊,var _this=this.getElementsByTagName('i')[0];

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标签吗,不懂,求解答。。。


提问者:wangao4321 2016-04-25 17:49

个回答

  • 慕粉3686312
    2016-08-22 23:25:02

    这快我也有问题,不过看了你们的解释之后貌似明白了,首先都是用的getElementsByTagName所以这获得都是一个数组,无论这个数组有多少元素,哪怕一个,他也是数组,回到楼主的问题当中,因为都是用的数组,所以要获取对象都是用[0]的,拙见。

  • DMSF
    2016-04-26 21:35:06

    当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标记的第一个.


  • 九言
    2016-04-25 18:33:51

    getElementsByTagName 这个方法返回一个类似数组的对象,访问数组对象可以用下标来访问
    【0】就是取其第一项,(注意是elements 那个S 说明是个数组类的)

    getElementsByTagName返回的是一个集合。[0],表示获取传进来元素里面元素叫i的。