jQuery:向每个循环中的数组添加对象不起作用

jQuery:向每个循环中的数组添加对象不起作用

问题描述:

当单击某个按钮时,我正在循环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

试试这个代码对象

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://*.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar) –

+0

谢谢为解释和链接参考!我现在知道了。 :) – NoReceipt4Panda