2017-05-30 72 views
0

當單擊某個按鈕時,我正在循環DOM元素。我已經把它貼類finish-proc的按鈕,所以當點擊啓動此功能:jQuery:向每個循環中的數組添加對象不起作用

<script> 
    $(document).on('click', '.finish-proc', function() { 
     var communities = []; 

     var $this, $thisDay, input, inputDay, text, textDay, obj, objDay; 

     $('.panel-default').each(function (i) { 
      var maxPeople = '.' + $(this).attr('data-community') + '-max-people'; 
      var dayInfoRow = '.' + $(this).attr('data-community') + '-day-info'; 
      obj = {}; 
      obj["maxPeople"] = $(maxPeople).val(); 

      var daysArrayInLoop = []; 

      $(dayInfoRow).each(function (j) { 
       var objDay = {}; 

       var dayString = '.' + $(this).attr('data-community') + '-day-' + (j + 1); 
       var dayStringStart = '.' + $(this).attr('data-community') + '-day-' + (j + 1) + '-start'; 
       var dayStringEnd = '.' + $(this).attr('data-community') + '-day-' + (j + 1) + '-end'; 

       objDay["dayString"] = $(dayString).val(); 
       objDay["dayStringStart"] = $(dayStringStart).val(); 
       objDay["dayStringEnd"] = $(dayStringEnd).val(); 

       daysArrayInLoop.push(objDay); 
      } 

      obj["dayArray"] = daysArrayInLoop; 

      communities.push(obj); 
     } 
    } 
</script> 

這個代碼就行了突破:

daysArrayInLoop.push(objDay); 

與錯誤:

daysArrayInLoop.push is not a function

誰能告訴我這是爲什麼?

編輯 - 我試圖改變var daysArrayInLoop = [];var daysArrayInLoop = {};,仍然得到同樣的錯誤

+0

你可以嘗試用'daysArrayInLoop推後定義數組。推(1);'看看它是否給出了同樣的錯誤。在推送和檢查控制檯是否顯示數組之前,請執行'console.log(daysArrayInLoop)'。你寫的代碼沒問題;它應該可以工作 –

+2

你有沒有在任何地方定義'dayInfoRow'? – cars10m

+0

基本上數組'daysArrayInLoop'被正確定義,並且在你使用'.push()'方法的時候在範圍內。所以一定有其他的東西.. – cars10m

回答

2

試試這個代碼對象

var daysArrayInLoop = new Array(); 
    daysArrayInLoop.push(obj); 
+0

這樣做了。我不明白這是如何工作,而不是放置'var daysArrayInLoop = [];' – NoReceipt4Panda

+1

'function Array(){ this.is ='SPARTA'; } var a = new Array(); var b = []; alert(a.is); // =>'SPARTA' alert(b.is); // => undefined a.push('Woa'); // => TypeError:a.push不是函數 b.push('Woa'); // => 1(OK)' new Array()創建一個新的運行時數組。無需額外處理 [link](https://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar) –

+0

謝謝爲解釋和鏈接參考!我現在知道了。 :) – NoReceipt4Panda

相關問題