Javascript jQuery:向每个循环中的数组添加对象不起作用
当单击某个按钮时,我正在遍历DOM元素。我已将classJavascript jQuery:向每个循环中的数组添加对象不起作用,javascript,jquery,push,each,Javascript,Jquery,Push,Each,当单击某个按钮时,我正在遍历DOM元素。我已将classfinish proc附加到按钮上,因此当单击时将激活此功能: <script> $(document).on('click', '.finish-proc', function () { var communities = []; var $this, $thisDay, input, inputDay, text, textDay, obj, objDay; $('
finish proc
附加到按钮上,因此当单击时将激活此功能:
<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不是一个函数
谁能告诉我这是为什么
编辑-我已尝试更改
var daysArrayInLoop=[]
tovar daysArrayInLoop={}代码>,仍然收到相同的错误请在推入对象后尝试此代码定义数组
var daysArrayInLoop = new Array();
daysArrayInLoop.push(obj);
请尝试在推入对象后定义数组
var daysArrayInLoop = new Array();
daysArrayInLoop.push(obj);
你能试试daysArrayInLoop.push(1)代码>&查看它是否给出相同的错误。在推送和检查控制台是否显示为数组之前,还要执行console.log(daysArrayInLoop)
。你写的代码还可以;如果您在任何地方定义了dayinfrow
,它应该可以工作?基本上,数组daysArrayInLoop
定义正确,并且在您使用其.push()方法时在范围内。所以肯定还有别的东西..你的代码看起来不错。你确定错误在同一行吗?您是否在页面的其他位置使用了daysArrayInLoop
?是否尝试使用var objDay=new Array();或var objDay=[]?你能试试daysArrayInLoop.push(1)代码>&查看它是否给出相同的错误。在推送和检查控制台是否显示为数组之前,还要执行console.log(daysArrayInLoop)
。你写的代码还可以;如果您在任何地方定义了dayinfrow
,它应该可以工作?基本上,数组daysArrayInLoop
定义正确,并且在您使用其.push()方法时在范围内。所以肯定还有别的东西..你的代码看起来不错。你确定错误在同一行吗?您是否在页面的其他位置使用了daysArrayInLoop
?是否尝试使用var objDay=new Array();或var objDay=[]?成功了。我不明白它是如何工作的,而不是放置var daysArrayInLoop=[]代码>函数数组();var b=[];警报(a.is);//=>'斯巴达警报(b.is);//=>未定义的a.push('Woa');//=>类型错误:a.push不是函数b.push('Woa');//=>1(确定)
new Array()正在创建一个新的运行时数组。无需额外处理,谢谢您的解释和链接参考!我现在明白了。:)成功了。我不明白它是如何工作的,而不是放置var daysArrayInLoop=[]代码>函数数组();var b=[];警报(a.is);//=>'斯巴达警报(b.is);//=>未定义的a.push('Woa');//=>类型错误:a.push不是函数b.push('Woa');//=>1(确定)
new Array()正在创建一个新的运行时数组。无需额外处理,谢谢您的解释和链接参考!我现在明白了。:)