![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 11 Dołączył: 1.01.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam,
cały dzień dzisiejszy pisałem funkcję parsującą listę
i zwracającą mi obiekt z tejże listy z odpowiednimi zagłębieniami. Oto ona:
W skrócie to funkcja działa tak: 1. pobiera id element listy (<ul>) 2. wyciąga elementy <li> za pomocą sortable() (zapożyczyłem z jQuery) 3. tworzymy nowy obiekt new_tab 4. w pętli do każdego elementu obiektu przypisujemy wartość id z elementy <li> 5. jeżeli dany element ma jakiś element <ul> pod sobą funkcja jest wykonywana ponownie. To znaczy powinno to działać, bo jak zauważyłem to funkcja działa wyłącznie dla elementów w głąb. Np. mając taką listę: Kod Sklep Hardware Procesory HDD Software OS Gry skrypt idzie Sklep->Hardware->Procesory->HDD. W ogóle nie rozumiem dlaczego tak się dzieje (IMG:style_emoticons/default/sad.gif) Rekurencja wywołana jest chyba prawidłowo. Proszę o rady i poprawki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
przed snem po tych piwach dokładnie nie chce mi się analizować tego kodu skoro nie podałeś gotowej strony do analizy [no nie będę sobie robił mini stronki ;p]...
podstawowy błąd dlaczego Ci indeksy giną przy następnych przebiegach pętli - tak, przy następnych przebiegach pętli gdy znowu wywołujesz tą samą funkcję ingerujesz do definicji zmiennych jeszcze nie skończonej wcześniej funkcji - a nie do końca definicji co do wartości - poczytaj o zasięgu zmiennych - jeśli zmienne "lokalne" nie poprzedzisz słowem kluczowym var to lądują one do globalnego skope do window i mogą być wykorzystywane przez inne nawet zagnieżdżone funkcje... linijka: for(q=0; q<result.length; q++){ oraz: for(w=0; w<children.length; w++){ wchodząc do funkcji rekurencyjnej dla q i w znowu przypisujesz im wartość równą 0 - zmienne są zdefiniowane pod window.q oraz window.w... a samej ścieżki przebiegu algorytmu "procesów" nie bardzo chce mi się analizować kiedy nadpisujesz lub gubisz dane ;] tym bardziej, że przed snem lubię sobie wypić kilka browarków ;p... pozatym na to co sprawdzasz mogłeś inaczej wyszukać elementy li niż przez sortable [skoro korzystasz z jquery to mogłeś szukać dzieci li w kontekście ul, lub mogłeś przelecieć wszystkie dzieci w czystym js w DOM i sprawdzić tagName - lub jeśli wolisz nodeName] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:53 |