我是javascript和jquery的新手,并且想知道是否有人可以告诉我为什么这不能正常工作。
我有一个下拉框,用户从中选择一个值,然后是“进程”。处理时,下拉列表的值以及文本框都存储在数组中。我希望用户能够基本上再次将相同的下拉选择和文本框数据存储在数组中,但现在又存储在一个新的值对中。
第一家商店将是 TestArray [0] [0] =“文本框值”
如果再次“已处理”,那就是 TestArray [1] [0] =“文本框值”
这样我可以稍后解析并计算用户“处理”下拉选择的次数;
var oneClickReport = $("#reportName").val();
if(oneClickReport == "Sample Report One"){
var arrayOneCount = reportOneArray.length;
var totalHouseholds = 0;
$("#reportChecks span:visible").each(function(){
if($(this).find(':checkbox').prop('checked')){
var HHName = $(this).text();
reportOneArray.push(HHName);
arrayTest[arrayOneCount][totalHouseholds] = HHName;
}
totalHouseholds += 1;
});
for(i = 0; i < arrayOneCount; i+=1){
alert(arrayTest[0][i]);
}
}
但是当第二次尝试“处理”时,我收到错误;
SCRIPT5007: Unable to set property '0' of undefined or null reference
在线;
arrayTest[arrayOneCount][totalHouseholds] = HHName;
答案 0 :(得分:1)
您需要初始化阵列。我不确定你想要做什么,但是你需要一个像这样的数组
var arrayTest = []
您需要初始化后续值,如
arrayTest[1] = []
然后你可以访问你的数组
arrayTest[1][0] = []
我为你做了一个例子
var oneClickReport = $("#reportName").val();
var arrayTest = [] # You may need to put this elsewhere
if(oneClickReport == "Sample Report One"){
var arrayOneCount = reportOneArray.length;
var totalHouseholds = 0;
$("#reportChecks span:visible").each(function(){
if($(this).find(':checkbox').prop('checked')){
var HHName = $(this).text();
reportOneArray.push(HHName);
if(!arrayTest[arrayOneCount]){ arrayTest[arrayOneCount] = []; }
arrayTest[arrayOneCount][totalHouseholds] = HHName;
}
totalHouseholds += 1;
});
for(i = 0; i < arrayOneCount; i+=1){
alert(arrayTest[0][i]);
}
}
答案 1 :(得分:0)
var arrayOneCount = reportOneArray.length;
您的问题并且您没有更改此值