#javascript #arrays #function #loops #return
#javascript #массивы #функция #циклы #Возврат
Вопрос:
у меня есть массив, который я пытаюсь выполнить с помощью array.length, но он останавливается в середине цикла без причины.
код :
var id = ['88' , '89' , '90' , '91' , '92' , '93' , '94' , '95' , '96' , '97' , '98' ];
var parent_id = ['1' , '1' , '88' , '1' , '88' , '91' , '93' , '93' , '92' , '90' , '97' ];
function getAllLearningPaths(id){
document.getElementById("catdiv").innerHTML = "THIS IS HE CURRENT CATEGORY ID : " id "<br>";
for(var i=0; i < id.length;i )
{
document.getElementById("catdiv").innerHTML = "THIS IS HE CURRENT CATEGORY PARENT ID : " parent_id[i] "<br>";
if(parent_id[i] == id amp;amp; id[i] != id)
{
document.getElementById("catdiv").innerHTML = "I MADE IT!";
getAllLearningPaths(parent_id[i]);
}
}
for(var i=0; i< Categories.length;i )
{
if(Categories[i] == id)
{
document.getElementById("l_ids_" CategoriesValues[i]).checked = true;
disablerow(document.getElementById("l_ids_" CategoriesValues[i]), '1');
}
}
return;
}
категории заполняются где-то еще в коде. это не проблема.
дело в том, что первый цикл не проходит второй запуск.
этот код выводит :
ЭТО ЕГО ТЕКУЩИЙ ИДЕНТИФИКАТОР КАТЕГОРИИ: 88, ЭТО ЕГО ТЕКУЩИЙ идентификатор РОДИТЕЛЯ КАТЕГОРИИ: 1, ЭТО ЕГО ТЕКУЩИЙ идентификатор РОДИТЕЛЯ КАТЕГОРИИ: 1
есть идея?
Ответ №1:
Эта строка выглядит неправильно —
if(parent_id[i] == id amp;amp; id[i] != id)
parent_id
выглядит как массив целых чисел, поэтому id
переменная должна быть int, чтобы пройти этот тест. Затем вы ссылаетесь на i
как на массив в следующей части инструкции if — id[i] != id
.
Ответ №2:
похоже, что это может быть эта строка if(Categories[i] == id)
вы проверяете значение в категориях перед массивом id, должны ли вы проверять индекс внутри id?
Комментарии:
1. id — это параметр, предшествующий этой функции
Ответ №3:
Должно быть выдано исключение. Вместо того, чтобы пытаться выяснить, в чем проблема в вашем коде, вам следует добавить обработку исключений (используйте try catch) и отладить ее с помощью firebug
Ответ №4:
if(parent_id[i] == id amp;amp; id[i] != id)
В вашей функции ‘id’ ссылается на parent_id, потому что это аргумент, который вы передали функции.
Прерывание этой строки означает:
if(parent_id[i] == parent_id amp;amp; parent_id[i] != parent_id)
Я бы предложил либо переименовать вашу переменную-аргумент, либо массив идентификаторов.
Ответ №5:
Кажется, что ваш цикл выполняется дважды. Я предполагаю, что вы передаете строку типа ’88’ для параметра id. Таким образом, он возвращает 2 для id.длина, поскольку идентификатор является строкой.