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

为什么只能用this呢。个人的见解。不知道对不对

在取出元素a的innerHTML后,想赋值给cite。只能用this.innerHTML? 为什么不能用as[i].innerHTML   估计是因为[]可以表示一个元素的属性?

可以运行的代码:

var title=box.getElementsByTagName('cite')[0],

      as=box.getElementsByTagName('a');

      for(var i=0;i<as.length;i++){

      as[i].onclick=function(){

      title.innerHTML=this.innerHTML;

      }

把上面的this换成as[i]就没法运行。

正在回答

2 回答

因为代码执行到onclick的回调方法里的时候,i早就已经++最大值了,超出索引范围了。按你想法改了之后,每次点击a,执行的i总是a的长度。所以你要么是用你的this,还可以用(function(i){

//code here 

})(i))这样把i传递进来。

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

Jesse1990 提问者

Got it~Thanks very much.
2015-07-22 回复 有任何疑惑可以回复我~

as[i].onclick=function(){

      title.innerHTML=this.innerHTML; //改成as[i]这样记录是得到的i最大的值。

      }

可以改成这样:

(function(item){
title.innerHTML=item.innerHTML;
}(as[i]))



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

Jesse1990 提问者

我的疑问是改成把this改成as[i]之后为啥赋值不能成功了呢。如果说[]可以表示一个元素的属性。那as[i].click为什么能行。唯独就是as[i].innerHTML不行呢~~~错误类型是说as[i]未定义~~
2015-07-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么只能用this呢。个人的见解。不知道对不对

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