Mam tablicę, staram się pętli przez array.length, ale zatrzymuje się w środku pętli bez powodu.

Kod :

    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;
}

Kategorie są wypełnione gdziekolwiek indziej w kodzie. to nie problem. Rzeczy jest to, że pierwsza pętla nie przekazuje drugiego biegu. Niniejsze wyjścia kodu:

To jest aktualna kategoria ID: 88 Jest to bieżąca kategoria ID rodzica: 1 To jest aktualna kategoria ID rodzica: 1

Dowolny pomysł?

0
eric.itzhak 12 listopad 2011, 20:44

5 odpowiedzi

Najlepsza odpowiedź

Ta linia wygląda źle -

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

parent_id Wygląda jak tablica INTS, więc zmienna id musiała być Int, aby przekazać ten test. Następnie odnoszą się do i jako tablicę w następnej części oświadczenia IF - id[i] != id.

0
ipr101 12 listopad 2011, 16:55

Wygląda na to, że może to być ta linia if(Categories[i] == id) Sprawdzasz wartość w kategoriach ponownie, jeśli chcesz sprawdzić indeks wnętrza ID?

0
Tim Joyce 12 listopad 2011, 16:49

Musi być rzucony wyjątkiem. Zamiast próbować dowiedzieć się, gdzie problem jest w swoim kodzie, należy dodać obsługę wyjątku (użyj spróbuj złapać) i debugować go z Firebug

0
ComfortablyNumb 12 listopad 2011, 16:58
if(parent_id[i] == id && id[i] != id)

W swojej funkcji "ID" odnosi się do Parent_id, ponieważ jest to argument, który przeszedłeś do funkcji.

Łamanie tej linii oznacza:

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

Zaproponowałem zmianę zmiany zmiennej argumentu lub tablicy identyfikacyjnej.

0
NullUserException 12 listopad 2011, 17:10

Twoja pętla wydaje się działać dwukrotnie. Myślę, że przechodzisz w ciągu jak "88" dla parametru ID. Zwraca więc 2 dla id.length od od czasu identyfikatora jest ciągiem.

0
Sivakumar 12 listopad 2011, 17:13