Zoals de titel al zegt, het in- en uitklappen van mijn menu wil niet helemaal werken.
Ik heb nu op onderstaande manier een menustructuur.
Als je dus nu op een link met een onclick event-handler klikt, moet de onderliggende <ul> tevoorschijn komen áls deze nog niet zichtbaar is. Is deze al wél zichtbaar is, moet de onderloggende <ul> weer weggaan.
Nu heb ik dit op de volgende manier vgeprobeert:
Alleen werkt dit niet. Als ik nu het volgende probeer:
Dan wordt de onderliggende <ul> goed weergegeven. Dus leek het mij logisch die if/else constructie erin te doen om te kijken of de onderliggende <ul> niet al op display: block staat. Dit om het menu'tje ook weer in te laten klappen, maar dat werkt dus niet.
Dus mijn vraag is nu, wáárom dit niet werkt, en of iemand weet hoe ik dit wel werkend kan krijgen?
P.S. Ik weet dat je zo'n menu ook in CSS kan fixxen, maar doe het nu even in JS
Ik heb nu op onderstaande manier een menustructuur.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <ul> <li><a onclick="showNextParent(this)"></a> <ul> <li>Meuk</li> <li>Meuk</li> </ul> </li> <li><a onclick="showNextParent(this)"></a></li> <ul> <li>Meuk</li> <li>Meuk</li> </ul> </li> </ul> |
Als je dus nu op een link met een onclick event-handler klikt, moet de onderliggende <ul> tevoorschijn komen áls deze nog niet zichtbaar is. Is deze al wél zichtbaar is, moet de onderloggende <ul> weer weggaan.
Nu heb ik dit op de volgende manier vgeprobeert:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function showNextParent(startNode) { var menuObj = startNode.parentNode, i; for (i=0; i<menuObj.childNodes.length; i++) { var node = menuObj.childNodes.item(i); if(node.nodeName == "UL") { if(node.style.display == "none") { node.style.display = "block"; } else { node.style.display = "none"; } } } } |
Alleen werkt dit niet. Als ik nu het volgende probeer:
JavaScript:
1
2
3
4
5
6
7
8
9
| function showNextParent(startNode) { var menuObj = startNode.parentNode, i; for (i=0; i<menuObj.childNodes.length; i++) { var node = menuObj.childNodes.item(i); if(node.nodeName == "UL") { node.style.display = "block"; } } } |
Dan wordt de onderliggende <ul> goed weergegeven. Dus leek het mij logisch die if/else constructie erin te doen om te kijken of de onderliggende <ul> niet al op display: block staat. Dit om het menu'tje ook weer in te laten klappen, maar dat werkt dus niet.
Dus mijn vraag is nu, wáárom dit niet werkt, en of iemand weet hoe ik dit wel werkend kan krijgen?
P.S. Ik weet dat je zo'n menu ook in CSS kan fixxen, maar doe het nu even in JS