2015-02-05 64 views
-4

我从玩这个游戏不能在javascript中为每个循环调用方法吗?

再学习JavaScript的

http://play.elevatorsaga.com/

DOC:http://play.elevatorsaga.com/documentation.html#docs

目前试图击败4,其中有两部电梯的水平,我想用每个循环都要经过每个电梯的对象,然后调用方法做类似的东西:

  var maxFloor = 7; 
      var basement = 0; 
      // when each elevator is idle, go to each floor 
      for each(var e in elevators){ 
       e.on("idle", function() { 
        //The elevator is idle, so let's go to all the floors (or did we forget one?) 
        for(var i = basement; i < maxFloor; i++){ 
         e.goToFloor(i);  
        } 
       }); 
      } 

这是为什么不编译?当__.on()方法在for each循环之外被调用时,一切正常。有什么基本的我失踪的JavaScript?

感谢

+1

'e'不是你第二次循环发生时的样子。 – 2015-02-05 22:03:10

+0

@KevinB嗯,不是'电梯'吗?谢谢 – ljk 2015-02-05 22:11:57

+0

它将永远是最后一个,而不是你期望的那个。它也将是数组的索引,而不是数值。 – 2015-02-05 22:16:06

回答

0

可能有一些错误的位置:根据您的浏览器

  • for each应该读for
  • for-in构建对集合迭代(即数组和对象),并传递“index”指向in之前命名的变量。在你的代码中,如果elevators是这样一组电梯对象,就像这个elevators = [elevator1, elevator2, ..., elevatorN],每次for-in环路e将是电梯的索引e = 0, then e = 1, ..., e = n。因此,请尝试命名为e,i,并在循环开头声明var e = elevators[i]并且您的代码应该可以工作。
+0

是不是'也可以接受? %2FStatements%2Ffor_each ...在我意识到我的错误对待索引作为它的价值,谢谢! – ljk 2015-02-05 22:21:07

+0

如果你看下表''为每个'只支持在Firefox中,必须爱javascript。 ;-) – drnewman 2015-02-05 22:29:10

+0

好赶,谢谢! – ljk 2015-02-05 22:39:23

相关问题