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

索引问题,求各位大神赐教

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

           myLi[i].index=i;

            myLi[i].onclick=function(){

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

                    myLi[j].className="";

                    myDiv[j].className="second";

                }

                this.className="firstMenu";

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

                //为什么必须把i赋值给myli[i].index????

                //为什么不能直接myDiv[i]???this作用到底是怎么样的

            }

        }

 为什么这里必须把i赋值给myli[i].index?为什么不能直接myDiv[i].className="",这样就显示不出来???为什么就必须有这个赋值过程,不都一样用的i的值吗?this作用到底是怎么样的?


正在回答

1 回答

因为你的 for 循环和 onclick 点击事件是异步进行的,也就是说你的for执行完毕了之后你才去点击,此时你的 i 都已经到了最后一个值了,所以为了解决这个问题,就是在 for 循环执行的过程中用一个属性把变化的 i 先保存起来,就是你写的 myLi[i].index=i; 。。。。不然你取到的 i 都是 myLi.length-1;

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

qq_齐步走_1 提问者

非常感谢!
2017-03-13 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

索引问题,求各位大神赐教

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