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

来源:5-1 编程挑战

Jesse1990

2015-07-05 12:49

在取出元素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回答

  • domico
    2015-07-21 17:40:58
    已采纳

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

    //code here 

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

    Jesse1...

    Got it~Thanks very much.

    2015-07-22 12:04:44

    共 1 条回复 >

  • domico
    2015-07-05 12:54:04

    as[i].onclick=function(){

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

          }

    可以改成这样:

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



    Jesse1...

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

    2015-07-05 13:14:47

    共 1 条回复 >

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99545 学习 · 1197 问题

查看课程

相似问题