为了账号安全,请及时绑定邮箱和手机立即绑定

下面这段代码不懂啊,求解答啊,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标签吗,不懂,求解答。。。


正在回答

3 回答

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

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


1 回复 有任何疑惑可以回复我~
#1

wangao4321 提问者

你说的很详细,我理解了。那我在问一个问题,为什么 var _this=this.getElementsByTagName('i')[0]要这样写呢,直接写成 var _this=this.getElementsByTagName('i')不行吗,因为源代码,每个a标签中都只有一个i标签。
2016-04-27 回复 有任何疑惑可以回复我~
#2

DMSF 回复 wangao4321 提问者

你这样写得到的是一个数组,虽然只有一个,不是一个具体的值,所以要[0]
2016-04-27 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

wangao4321 提问者

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

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113926    人
  • 解答问题       1443    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信