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

我一个一个for循环不能很好的执行?

我一个一个for循环不能很好的执行?

    for (var i = 0; i < nav.length; i++) {       nav[i].onclick = function () {           for (var j = 2; j < Content.length; j++) {               if ((i + 2) ==j) {                   //startMove(Content[j], { opacity: 100, left: 28, });                   alert('nihao');               }               else {                   startMove(Content[j], { opacity: 0 });               }               }           }       }为什么这个循环中    if ((i + 2) ==j)这个条件下的函数完全不执行?
查看完整描述

6 回答

已采纳
?
地狱快车_666

TA贡献4条经验 获得超0个赞

你的i有问题,i你定义在function外面。你的i并不能传到下面的function里。典型的闭包问题。建议你看下作用域。

查看完整回答
反对 回复 2016-08-24
  • weibo_张张张张张大仙呀_03578611
    weibo_张张张张张大仙呀_03578611
    麻烦帮我修改一下代码呗,谢谢
  • 地狱快车_666
    地狱快车_666
    for (var i = 0; i < nav.length; i++) { nav[i].index=i nav[i].onclick = function () { for (var j = 2; j < Content.length; j++) { if ((this.index + 2) ==j) { //startMove(Content[j], { opacity: 100, left: 28, }); alert('nihao'); } else { startMove(Content[j], { opacity: 0 }); } } } }
  • weibo_张张张张张大仙呀_03578611
    weibo_张张张张张大仙呀_03578611
    谢谢,可以运行了。 nav[i].index=i这句是什么意思,这个.index是什么概念呢?
点击展开后面2
?
雪舞蔷薇

TA贡献51条经验 获得超16个赞

    nav[i].onclick 你的js代码中有个单机事件  单机后进入下一个for循环抛出提示,我认为单击时并不能保证 i 值继续向下传

建议把  单击事件  写在第二个  for 循环里。

查看完整回答
反对 回复 2016-08-24
?
LEO_117

TA贡献2条经验 获得超1个赞

首先确认下是if((i+2)==j)里面不执行 还是else里面也不执行,也就是确认你的for循环判断语句到底进来了没,如果进来了,没执行if而执行了else,那你对i和j分别进行打印看看值

查看完整回答
反对 回复 2016-08-24
  • weibo_张张张张张大仙呀_03578611
    weibo_张张张张张大仙呀_03578611
    为什么我把i打印出来i的值一直是5呀?
  • LEO_117
    LEO_117
    你分别在第一个,第二个for循环里面去打印i的值 ,加以区分开,然后在for循环之外也打印 你就可以看到整体的i值得变化了啊 自我感觉 应该是跟你for循环里面的条件有关
?
qyy2499760117_叶子

TA贡献188条经验 获得超91个赞

你调试一下,每执行一次,观察i/j的变化。

查看完整回答
反对 回复 2016-08-24
  • 6 回答
  • 0 关注
  • 1827 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信