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

来源:7-1 JS动画案例

wangao4321

2016-04-25 17:49

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


写回答 关注

3回答

  • 慕粉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标记的第一个.


    DMSF 回复wangao...

    你这样写得到的是一个数组,虽然只有一个,不是一个具体的值,所以要[0]

    2016-04-27 19:53:20

    共 2 条回复 >

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

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

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

    wangao...

    你的意思是说,getElementsByTagName后面加上【0】,这句话用来表示这是一个聚合,而var _this=this.getElementsByTagName('i')[0],这句话表示获取这个集合中的所有I元素? 我一直把他理解成获取第一个I标签,所以是我理解偏差了?

    2016-04-25 20:04:37

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题