Beste Tweakers,
Ik was hier gister al mee bezig geweest en ben nu alweer een wat verder gekomen alleen heeft het helaas nog niet tot het gewenste resultaat geleid.
Ik heb een dropdown menu gemaakt (aangepast van de versie op dynamicdrive.com) die verschillende kleuren bevatten, dus voor elk menu een andere kleur. Nu is dit mij gelukt door verschillende div's te laden in het script. Het werkt allemaal hartstikke leuk, de menu's klappen uit en de verschillende kleuren zijn te zien. Maar nadat ik met mijn muis over kop1 ben gegaan en daar de menu bij is uitgeklapt via het uitgeklapte menu (of kop) over kop2 ga, dan klapt ook daar het menu bij uit maar verdwijnt het menu onder kop1 niet.
Het menu verdwijnt echter wel als ik met mijn muis helemaal van de layer (uitgeklapte menu) en kop verdwijn.
Dus als ik met mijn muis over alle kopjes heenga, zijn er vijf mooie uitgeklapte menu's te zien (wat dus niet de bedoeling is). En wanneer ik dan met mijn muis buiten de layers verdwijn, dan gaat alleen het menu weg waar ik als laatste met mijn muis ben geweest.
Ik denk dat het komt doordat alle div's tegelijk worden geladen en dat hij daarmee in de knoop komt.... ik kan ze in ieder geval niet apart laden (voor zover ik het getest) want dan werkt alleen diegene die direct is geladen.
Ik heb al wat geprobeerd, door op verschillende plekken koppelingen naar functies te maken... zo ook in de link bij onMouseout en bij de functie dropdownmenu() heb ik geprobeerd de functie delayhidemenu() aan te roepen, maar dan verdwijnt het uitgeklapte menu direct weer (zoals naar verwachting) .
Na veel geblaat hoop ik dat het een beetje duidelijk is, nu ik alle scenario's heb verteld.....
Hieronder vermeld in de betreffende codes.... mochten jullie nog meer informatie en/of duidelijkheid willen, laat het maar weten.
Ik hoop dat jullie de oplossing weten waardoor mijn menu's ook direct verdwijnen wanneer een ander menu tevoorschijn komt.
De link naar de code is alsvolgt:::
En de JS code::: (ik heb java aangegeven, dan is het misschien overzichtelijker door de kleurtjes)
edit:: JS code ingekort
Ik was hier gister al mee bezig geweest en ben nu alweer een wat verder gekomen alleen heeft het helaas nog niet tot het gewenste resultaat geleid.
Ik heb een dropdown menu gemaakt (aangepast van de versie op dynamicdrive.com) die verschillende kleuren bevatten, dus voor elk menu een andere kleur. Nu is dit mij gelukt door verschillende div's te laden in het script. Het werkt allemaal hartstikke leuk, de menu's klappen uit en de verschillende kleuren zijn te zien. Maar nadat ik met mijn muis over kop1 ben gegaan en daar de menu bij is uitgeklapt via het uitgeklapte menu (of kop) over kop2 ga, dan klapt ook daar het menu bij uit maar verdwijnt het menu onder kop1 niet.
Het menu verdwijnt echter wel als ik met mijn muis helemaal van de layer (uitgeklapte menu) en kop verdwijn.
Dus als ik met mijn muis over alle kopjes heenga, zijn er vijf mooie uitgeklapte menu's te zien (wat dus niet de bedoeling is). En wanneer ik dan met mijn muis buiten de layers verdwijn, dan gaat alleen het menu weg waar ik als laatste met mijn muis ben geweest.
Ik denk dat het komt doordat alle div's tegelijk worden geladen en dat hij daarmee in de knoop komt.... ik kan ze in ieder geval niet apart laden (voor zover ik het getest) want dan werkt alleen diegene die direct is geladen.
Ik heb al wat geprobeerd, door op verschillende plekken koppelingen naar functies te maken... zo ook in de link bij onMouseout en bij de functie dropdownmenu() heb ik geprobeerd de functie delayhidemenu() aan te roepen, maar dan verdwijnt het uitgeklapte menu direct weer (zoals naar verwachting) .
Na veel geblaat hoop ik dat het een beetje duidelijk is, nu ik alle scenario's heb verteld.....
Hieronder vermeld in de betreffende codes.... mochten jullie nog meer informatie en/of duidelijkheid willen, laat het maar weten.
Ik hoop dat jullie de oplossing weten waardoor mijn menu's ook direct verdwijnen wanneer een ander menu tevoorschijn komt.
De link naar de code is alsvolgt:::
HTML:
1
2
3
4
5
6
7
| <td width="97" class="td_menu"> <a href="default.htm" onClick="return clickreturnvalue()" onMouseover="dropdownmenu(this, event, menu1, '1', '160px')" onMouseout="delayhidemenu()">Het bureau</a> </td> <td width="116" class="td_menu"> <a href="default.htm" onClick="return clickreturnvalue()" onMouseover="dropdownmenu(this, event, menu2, '2', '160px')" onMouseout="delayhidemenu()">Onze principes</a> </td> <!-- enzz.... --> |
En de JS code::: (ik heb java aangegeven, dan is het misschien overzichtelijker door de kleurtjes)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| if (ie4||ns6){ // het heeft geen zin om van de 1,2,3... een variabele te maken gezien hij ze allemaal moet laden (of je kan een loop gebruiken natuurlijk... ;-) document.write('<div id="dropmenudiv1" style="visibility:hidden;width:'+menuwidth+';" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>') document.write('<div id="dropmenudiv2" style="visibility:hidden;width:'+menuwidth+';" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>') // enz.. } function showhide(obj, e, visible, hidden, menuwidth){ if (ie4||ns6) dropmenuobj.style.left=dropmenuobj.style.top=-500 if (menuwidth!=""){ dropmenuobj.widthobj=dropmenuobj.style dropmenuobj.widthobj.width=menuwidth } if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover") obj.visibility=visible else if (e.type=="click") obj.visibility=hidden } function dropdownmenu(obj, e, menucontents, menustyle, menuwidth){ if (window.event) event.cancelBubble=true else if (e.stopPropagation) e.stopPropagation() clearhidemenu() if (menustyle == 1) dropmenuobj=document.getElementById? document.getElementById("dropmenudiv1") : dropmenudiv1 if (menustyle == 2) dropmenuobj=document.getElementById? document.getElementById("dropmenudiv2") : dropmenudiv2 // enz.. if (ie4||ns6){ showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth) } return clickreturnvalue() } function clickreturnvalue(){ if (ie4||ns6) return false else return true } function dynamichide(e){ if (ie4&&!dropmenuobj.contains(e.toElement)) delayhidemenu() else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget)) delayhidemenu() } function hidemenu(e){ if (typeof dropmenuobj!="undefined"){ if (ie4||ns6) dropmenuobj.style.visibility="hidden" } } function delayhidemenu(){ if (ie4||ns6) delayhide=setTimeout("hidemenu()",disappeardelay) } function clearhidemenu(){ if (typeof delayhide!="undefined") clearTimeout(delayhide) } if (hidemenu_onclick=="yes") document.onclick=hidemenu |
edit:: JS code ingekort
[ Voor 73% gewijzigd door Theske op 14-11-2005 10:23 ]
Proud member of the Cosmic Cows