Hierarchikus lista rendezése
Sziasztok!
Napok óta keresem megoldást (működő algoritmust) a tárgyban szereplő problémára. A lényeg, hogy van egy hierarchikus menüm (ul, li, jó sok egymásba ágyazással), amit JS épít fel, majd egy másik script segítségével ki-becsukogathatóvá varázsolom.
A generáló utasítások sorrendjét (értsd: hogy milyen sorrendben jönnek létre az egyes menüpontok) nem tudom meghatározni. Viszont a cél az, hogy a sorend olyan legyen, mint egy könyvtár struktúrának. Tehát egy olyan menüpont melynek vannak gyermekei előrébb kerül a listában, mint egy "mezei"elem. Az azonos szintű elemek pedig ABC rendben rendeződnek.
Kerestem: "(sort|order) list items" kulcsszavakkal
Az összes eddigi próbálkozásom kudarcba fulladt. Próbáltam sort() segítségével, de ha jól értem a doksit és a hibaüzeneteket, akkor ez nem alkalmazható DOM objektumokra.
Hoztam létre egy külön átmeneti tömböt, amibe bepakoltam az egyes elemeket, és így rendezni őket, de ez sem volt hajlandó működni (őszintén szólva ahibaüzenetre már nem emlékszem).
Megköszönöm az RTFM-t is, és a megfelelő hívószókat is. De megelégszem egy emberi nyelven megfogalmazott algoritmussal is :)
tiku
■ Napok óta keresem megoldást (működő algoritmust) a tárgyban szereplő problémára. A lényeg, hogy van egy hierarchikus menüm (ul, li, jó sok egymásba ágyazással), amit JS épít fel, majd egy másik script segítségével ki-becsukogathatóvá varázsolom.
A generáló utasítások sorrendjét (értsd: hogy milyen sorrendben jönnek létre az egyes menüpontok) nem tudom meghatározni. Viszont a cél az, hogy a sorend olyan legyen, mint egy könyvtár struktúrának. Tehát egy olyan menüpont melynek vannak gyermekei előrébb kerül a listában, mint egy "mezei"elem. Az azonos szintű elemek pedig ABC rendben rendeződnek.
Kerestem: "(sort|order) list items" kulcsszavakkal
Az összes eddigi próbálkozásom kudarcba fulladt. Próbáltam sort() segítségével, de ha jól értem a doksit és a hibaüzeneteket, akkor ez nem alkalmazható DOM objektumokra.
Hoztam létre egy külön átmeneti tömböt, amibe bepakoltam az egyes elemeket, és így rendezni őket, de ez sem volt hajlandó működni (őszintén szólva ahibaüzenetre már nem emlékszem).
Megköszönöm az RTFM-t is, és a megfelelő hívószókat is. De megelégszem egy emberi nyelven megfogalmazott algoritmussal is :)
tiku
létrehozáskor rendezni?
kliens oldalon is rendezni tudod, pl. úgy hozod létre a temp tömbödet, hogy ha van gyereke, a neve elé biggyesztesz egy 'D'-t, ha nincs, akkor egy 'F'-t, s ez alapján rendezed. Rekurzivan végig kell menni az összesen persze, aminek van gyereke...
Illetve az Array.sort fv-nek paraméterként adhatsz ám összehasonlítót is, s akkor azt használja
létrehozáskor nem tudom
Próbáltam az összehasonlító függvényt is, de azzal is volt valami.
Úgy értelmezem az elmúlt napokban elkövetett kisérletek tapasztalatait, hogy a DOM objektumok cseréjét valami miatt nem tudom végrehajtani. Mert ugye a rendezés, elemek valamilyen feltételek szerinti cseréinek sorozata.
rekurzív
elnéztem, bocs.
A kódot nem teszteltem, csak összedobtam, a koncepció lényege, hogy előbb eltávolítod a node-ot, majd újra beszúrod. Mivel mindig a végére szúrod be, ugyanaz lesz a sorrendje, mint ami a neves tömbbé, így azt kapod, amire számítasz
"így azt kapod, amire számítasz"
A rendezés előtt, és után kiíratom a names-t. Gyönyörű megvannak a prefixek, rendezés után az elvárt sorrendben jelennek meg a prefixezett címek, de a végeredmény mégsem az igazi. Van olyan almenü ahol csak szigorú, eredeti érték szerinti ABC rendben vannak a menüpontok, és olyan mintha a prefixeket nem is venné figyelembe a rendezésnél.
Azt hiszem masszírozom még egy kicsit...
tiku
ha ne'adj isten sikerül, oszd meg velünk is!
említettem, hogy nem teszteltem... ha sikerül, ld. tárgysor! :)