bij marktplaats.nl en nog een paar van die sites kun je advertenties toevoegen. Je klikt op een categorie en als je daarop geklikt hebt verschijnen meteen alle subcategorieen van die categorie.
Weet iemand zo'n script te vinden, of hoe ik zoiets "makkelijk" kan maken? (ben niet goed in javascript). ik heb eens gezocht, maar kan dat ik verkeerd zoek.
Je kan het best met AJAX gaan werken, als je op zo categorie een onChange (Zoiets) toepast kan je met AJAX een <div> laten tonen met de dynamische subcategorieën.
ajax.. ajax.... Het gebruik van Ajax staat verder buiten de functies die je nodig hebt. Tuurlijk om de data op te halen kan je ervoor kiezen om dit te doen met ajax. Zelf lijkt het me n beetje overdreven, aangezien er vaak toch geen honderden categorieën zijn.
Ik zal je n opzetje geven, maar het is natuurlijk de bedoeling dat je het zelf script..
inprincipe zou het als het volgt werken.
Je hebt associatie arrays, deze zijn het zelfde opgebouwd als je database. Beter nog is dat je met een object werkt (wanneer je id's niet opvolgend zijn heb je al snel problemen met arrays en wordt het erg complex).
Simpelweg aan te spreken als CatObj[0].subCats[0].naam.
Dit object dien je dus als text op te bouwen met php.
Nu je alle categorieën tot je beschikking hebt in js is het een kwestie van je juiste eventhandling.
je maakt dus 2 dropdownboxxen (of meerdere, dit hangt natuurlijk af hoeveel dimensies diep je subcategorieën zijn.) en bij nr hang je een onchange eventhandler die jou 2de vult met de juiste data:
html (het eerste dropdown object is al gevuld (ook dmv php) dit kan je ook goed doen in je js maar het gata om de illustratie ;) )
tja.. zoals ik al zei is het 'n draft. Als ik zo naar de code kijk zie ik al 2 fouten die je dient te verbeteren.. Wellicht mijn fout, maar de code zelf doornemen is geen verkeerd idee
in ieder geval:
- definiëren van var j dient gedaan te worden als var j=0;
- catObj[i].id bestaat niet .catID wel.
- onChange = onchange
Misschien is het ook een idee om een leeg object in je HoofdCat select te zetten dus met value=0 en value 'kies n cat' hiervoor maak je nastuurlijk een check in je onchange eventhandler zodat hij niet het object wil aanspreken wanneer deze gekozen wordt.
Dat kan. Maar het enige verschil is hier dat je geen object vult met database data maar je html als een object opbouwt. (dus je maakt alles selectboxxen al gevuld en zet deze in een div met een id die gelijkt (of bijna gelijk) aan de id van je hoofdcat)
opdeze manier bekijk je welke div je showed en de rest hide je.
dus dmv element.style.display = 'none'; (hiden) element.style.display = 'block'; (showen).
Het probleem is dat je alle divs moet hiden dus deze dien je in js voor te definieren of je loopt alle div elementen door in je (getElementsByTagName('div')) DOM en matched ze via regex of ze voldoen aan je criteria. (dus dmv een prefix)