In een form heb ik de volgende select staan:
Dit geeft de volgende HTML output:
Je begrijpt, ik trek hier een boomstructuur uit een database. De values van de options zijn de id's van de categorien in de database.
Nu wil ik graag een tekstveld aan dit form toevoegen, waar het pad naar een node in komt te staan zodra ik een categorie in de select box aanklik. Met andere woorden: als ik op "Schoenen" klik, moet het tekstveld er als volgt uitzien:
Om dit serverside te doen lukt me wel; via een recursieve functie loop ik de child - parent relaties na. Ik heb alleen problemen om hetzelfde clientside op te lossen.
Ik zit al lang te denken en heb een basis idee, maar weet te weinig van javascript om te weten of dit ook werkelijk kan. Vandaar mijn vraag of iedereen die er meer van weet mij zou kunnen vertellen of er mogelijkheden zijn om dit op te lossen, en zo ja - misschien kun je een hint geven?
Idee
• Om de select box te indenten, gebruik ik   Als de boom een level dieper gaat, komt er 1   bij.
• Als er een categorie geselecteerd wordt, kijk ik hoeveel  's er voor deze categorie staan (Schoenen bijvoorbeeld heeft 3  's)
• Vervolgens ga ik door de options omhoog en noteer de eerste categorie die ik tegenkom met een nbsp minder (in dit geval "Heren" met twee  's)
• Deze stap herhaal ik tot ik bovenin de boom ben, waar er geen   voor de categorie staat (hier: "Winkel").
• De categorien heb ik tijdens dit proces opgeslagen in een array. Deze array bevat nu het pad van de geselecteerde categorie tot aan de root categorie
• Ik draai de array om, om het pad van root >> naar geselecteerde categorie te krijgen.
Wie schiet hier gaten in of helpt mij op weg?
HTML:
1
2
3
4
5
6
7
8
9
10
| <select> <option value=23>Winkel</option> <option value=28> Kleding</option> <option value=56> Dames</option> <option value=57> Heren</option> <option value=61> Broeken</option> <option value=62> Schoenen</option> <option value=25> Electronica</option> <option value=93> Computers</option> </select> |
Dit geeft de volgende HTML output:
code:
1
2
3
4
5
6
7
8
9
10
| +----------------+ | Winkel | | Kleding | | Dames | | Heren | | Broeken | | Schoenen | | Electronica | | Computers | +----------------+ |
Je begrijpt, ik trek hier een boomstructuur uit een database. De values van de options zijn de id's van de categorien in de database.
Nu wil ik graag een tekstveld aan dit form toevoegen, waar het pad naar een node in komt te staan zodra ik een categorie in de select box aanklik. Met andere woorden: als ik op "Schoenen" klik, moet het tekstveld er als volgt uitzien:
code:
1
2
3
| +-------------------------------------+ | Winkel > Kleding > Heren > Schoenen | +-------------------------------------+ |
Om dit serverside te doen lukt me wel; via een recursieve functie loop ik de child - parent relaties na. Ik heb alleen problemen om hetzelfde clientside op te lossen.
Ik zit al lang te denken en heb een basis idee, maar weet te weinig van javascript om te weten of dit ook werkelijk kan. Vandaar mijn vraag of iedereen die er meer van weet mij zou kunnen vertellen of er mogelijkheden zijn om dit op te lossen, en zo ja - misschien kun je een hint geven?
Idee
• Om de select box te indenten, gebruik ik   Als de boom een level dieper gaat, komt er 1   bij.
• Als er een categorie geselecteerd wordt, kijk ik hoeveel  's er voor deze categorie staan (Schoenen bijvoorbeeld heeft 3  's)
• Vervolgens ga ik door de options omhoog en noteer de eerste categorie die ik tegenkom met een nbsp minder (in dit geval "Heren" met twee  's)
• Deze stap herhaal ik tot ik bovenin de boom ben, waar er geen   voor de categorie staat (hier: "Winkel").
• De categorien heb ik tijdens dit proces opgeslagen in een array. Deze array bevat nu het pad van de geselecteerde categorie tot aan de root categorie
• Ik draai de array om, om het pad van root >> naar geselecteerde categorie te krijgen.
Wie schiet hier gaten in of helpt mij op weg?
[ Voor 7% gewijzigd door Reveller op 03-07-2004 22:35 ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."