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

js部分,为什么要先把i存到loLis[i].index里???求助!!!>_<!!

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

          titles[i].onclick=function(){

              for(var j=0;j<divs.length;j++){

                  divs[j].className="hide";

              }

              divs[i].className="";

          }//这个是错误的,点击没有反应


    

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

          titles[i].index=i;

          titles[i].onclick=function(){

              for(var n=0;n<divs.length;n++){

                 // titles[n].className="";

                  divs[n].className="hide";

              }

              //this.className="on";

              divs[this.index].className="";

          }

      };//这个是正确的


不太明白为什么。。

为什么一定要把i先存储到index里呢?

onclick后,进入函数,i的值不是没变吗?

为什么不能直接用i来访问到和标题li对应的div呢?也就是像第一个那样,divs[i].className="";这样重写对应div的className,为什么不行?

另外,可以像本例这样,赋值index的,还有什么标签啊?这个index是li的属性吗?

求助求助,求大神帮帮忙,谢了~~~

正在回答

3 回答

mark

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

我也被这个问题困扰了!能给我再说明下吗?谢谢。

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

南慕瑶 提问者

我觉得你可以这样理解(纯粹个人理解,仅供参考): onclick事件触发后,进入function,在这个function里,我们只能获得绑定了onclick事件的那个对象,也就是我代码中的title[i]对应的li,而不能获得除了这个对象以外的其他数据,比如:i的值。所以,我们先把每一个title[i]对应的i,存到一个我们自定义的属性index中,也就是代码中title[i].index这样的形式,这样,index作为title[i]这个对象的一个属性,在onclick事件触发时,随对象一同传到function中,在function中就可以通过this.index得到我们想要的i的值了
2015-08-05 回复 有任何疑惑可以回复我~
#2

weibo_这句话送给你算了_0

666
2015-09-09 回复 有任何疑惑可以回复我~
#3

慕虎144582 回复 南慕瑶 提问者

牛逼!
2018-09-28 回复 有任何疑惑可以回复我~

index不是li的属性,是我们自己给这个数组赋值的一个属性,目的是为了记录i值,另外一种解决方案是用闭包传值。

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

南慕瑶 提问者

大概明白了,谢啦~^^
2015-08-02 回复 有任何疑惑可以回复我~
#2

marshall_stan 回复 南慕瑶 提问者

我也被这个问题困扰了!能给我再说明下吗?谢谢。
2015-08-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468320    人
  • 解答问题       21893    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

js部分,为什么要先把i存到loLis[i].index里???求助!!!>_<!!

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