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 = {};
,仍然得到同样的错误
试试这个代码对象
var daysArrayInLoop = new Array();
daysArrayInLoop.push(obj);
这样做了。我不明白这是如何工作,而不是放置'var daysArrayInLoop = [];' – NoReceipt4Panda
'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) –
谢谢为解释和链接参考!我现在知道了。 :) – NoReceipt4Panda
你可以尝试用'daysArrayInLoop推后定义数组。推(1);'看看它是否给出了同样的错误。在推送和检查控制台是否显示数组之前,请执行'console.log(daysArrayInLoop)'。你写的代码没问题;它应该可以工作 –
你有没有在任何地方定义'dayInfoRow'? – cars10m
基本上数组'daysArrayInLoop'被正确定义,并且在你使用'.push()'方法的时候在范围内。所以一定有其他的东西.. – cars10m