2015-02-05 63 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

相關問題