2015-04-29 78 views
0

我已經編寫了一個返回值的腳本。當我記錄包含這些值的變量時,它會顯示它們,並且它們是正確的。然後,無論我如何嘗試,concat,push,equals等,當我嘗試將值添加到數組中時,立即記錄數組的內容,那些值不存在或未定義。這是我的代碼,或者至少是它的一個子集。JavaScript不會爲數組添加值

displayRange: function() { 
    if(app.selectedObject !== undefined && app.selectedObject.movement !== undefined && app.selectActive === undefined) { 

     // holds rage 
     t.rArray = []; 
     t.oArray = []; 
     app.selectActive = true; 
     t.obj = app.selectedObject; 

     // amount of allotted movement for unit 
     t.len = t.obj.movement * 2; 

     // loop through x and y axis 
     for (x = -t.len; x < t.len; x += 1){ 
      for (y = -t.len; y < t.len; y += 1){ 

       // return cost of each movement 
       t.hl = this.calcRange('x', x, y); 

       // if movement cost is less then or eual to the allotted movement then add it to the range array 
       if (t.hl.move <= t.obj.movement){ 
        // find obsticles 

        t.ex = t.hl.origin.x + x; 
        t.wy = t.hl.origin.y + y; 
        t.obsticle = this.findObsticles(t.ex, t.wy);   

        // get the number of offset movement from the obsticle 
        if (t.obsticle !== undefined){ 
         t.offset = app.settings.obsticleStats[t.obsticle.obsticle][app.selectedObject['type']]; 
         if (t.offset !== undefined){ 
          // make an array of offset values, starting point, plus movement, and the amount of offset beyond that movement 
          t.oArray.push(this.obsticleLogic(t.ex, t.wy, t.mx, t.my, t.offset)); 
         } 
        } 
        // add all values to array 
        t.rArray.push({ x: t.ex, y: t.wy, type:'highlight'}); 
       } 
      } 
     } 

     offsetArr = app.offsetArray(t.rArray, t.oArray); 
     for (l = 0; l < offsetArr; l += 1){ 
      app.map.highlight.push(offsetArr[l]); 
     } 

     for (i = 0; i < t.oArray.length; i += 1){ 
      app.offset.push(t.oArray[x]); 
     } 

     console.log(t.oArray); 
     console.log(offsetArr); 
     console.log('offset:'); 
     console.log(app.offset); 
     console.log('highlight'); 
     console.log(app.map.highlight); 

     window.requestAnimationFrame(app.animateEffects); 
    } 

    return false; 
}, 

我已經設置了app.map.highlight = [];在app.map區域中的 。與app.offset一樣。

他們已被宣佈,他們只是在一個不同的對象。我不明白爲什麼它不會爲數組添加值。我將它們記錄下來並查看它們,然後在調用數組之後直接將它們設置爲undefined。爲什麼會發生?

他們正在循環嘗試讓他們進入陣列的唯一原因是因爲這是我試過的最後一件事。

+1

你可以把它放到一個可用的jsFiddle中嗎?理解和使用可能會更容易。 – JasonWilczak

+0

我從來沒有使用JsFiddlel,不知道從哪裏開始..但是,我的假設是它必須是一些範圍問題,因爲它將設置值的函數,但不會將它們設置到另一個對象......它只是非常因爲類似的代碼在外部數組中執行和存儲可變參數沒有問題,所以我對此感到困惑。現在我的腦子已經死了,但是我不能再這樣做了。現在 –

+0

是的,我確定有一些範圍問題。 [這裏是JSFiddle](http://jsfiddle.net/)。你所要做的就是把你的javascript放在javascript區域,然後你可以把html放入。 – JasonWilczak

回答

0

我相信我有一個衝突的變量名稱的問題,我改名其中的一些,它開始工作。