Я новичок в 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;
Вам нужно инициализировать массив. Я не уверен, что именно вы хотите сделать, но вам нужен такой массив
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]);
}
}
ваша проблема с var arrayOneCount = reportOneArray.length;
и вы не меняете это значение