Javascript цикл через массив выходит в середине - PullRequest
0 голосов
/ 12 ноября 2011

У меня есть массив, который я пытаюсь перебрать по 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 && 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;
}

категориизаселены где-то еще в коде.нет проблем.Дело в том, что первый цикл не прошел второй прогон.этот код выводит:

ЭТО ОН СОВРЕМЕННЫЙ КАТЕГОРИИ ID: 88 ЭТО ОН СОВРЕМЕННЫЙ КАТЕГОРИИ ID РОДИТЕЛЯ: 1 ЭТО ОН СОВРЕМЕННЫЙ КАТЕГОРИИ ID РОДИТЕЛЯ: 1

любая идея?

Ответы [ 5 ]

0 голосов
/ 12 ноября 2011

Кажется, ваш цикл работает дважды.Я полагаю, вы передаете строку типа '88' для параметра id.Таким образом, он возвращает 2 для id.length, поскольку id является строкой.

0 голосов
/ 12 ноября 2011
if(parent_id[i] == id && id[i] != id)

В вашей функции 'id' относится к parent_id, потому что это аргумент, который вы передали функции.

Разбивка этой строки означает:

if(parent_id[i] == parent_id && parent_id[i] != parent_id)

Я бы предложил переименовать вашу переменную аргумента или массив id.

0 голосов
/ 12 ноября 2011

Эта строка выглядит неправильно -

if(parent_id[i] == id && id[i] != id)

parent_id выглядит как массив целых чисел, поэтому переменная id должна быть int для прохождения этого теста. Затем вы ссылаетесь на i как на массив в следующей части оператора if - id[i] != id.

0 голосов
/ 12 ноября 2011

Должно быть выброшено исключение. Вместо того, чтобы пытаться выяснить, где проблема в вашем коде, вы должны добавить обработку исключений (используйте try catch) и отладить ее с помощью firebug

0 голосов
/ 12 ноября 2011

похоже, что это может быть эта строка if(Categories[i] == id) вы проверяете значение в Categories против массива id, должны ли вы проверять индекс внутри id?

...