16. januar 2005 - 14:34
Der er
31 kommentarer og 1 løsning
Treemenu skal åbnes når ny side loades
Hej alle, Jeg har denne menu som virker perfekt men der er dog et lille minus ved den og det er at den lukker når en ny side loades. (ps. jeg ønsker ikke at bruge frames!) Hvordan kan jeg åbne automatisk når en ny side loades (skal åbne det rigtige menupunkt hvori den blev kaldt)? skal jeg sætte en cookie eller proppe en querystring på? Håber i kan hjælpe og komme med en forslag. Hermed menu som den ser ud indtil videre <style type="text/css"> .menudots{padding-left:9px;} .menupunkt{cursor:pointer;width:132px;color:#444444;font-weight:bold;text-align:right;} .menu{display:none;padding-left:0px;color:#4E1F33;font-weight:normal;} .menu a{text-decoration:none;} .menu a:link{color:4E1F33;} .menu a:visited{color:4E1F33;} .menu a:hover{color:white;} .menu a:active{color:4E1F33} </style> <script language="javascript" type="text/javascript"> function showMenu(d){ var id = d.id.substring(5); divs = document.getElementsByTagName('DIV'); for(i=0;divs.length>i;i++){ if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; } st = document.getElementById('menu'+id).style; st.display = (st.display!='block')?'block':'none'; } </script> <body bgcolor="cccccc"> <div id="omenu1" class="menupunkt" onclick="showMenu(this);">forside <div id="menu1" class="menu" onclick="event.cancel=true"></div> </div> <div id="omenu2" class="menupunkt" onclick="showMenu(this);" >nyhed <div id="menu2" class="menu" onclick="event.cancel=true"> <a href="" target="_self">Hvorfor 1</a><br> <a href="" target="_self">Hvorfor 2</a><br> <a href="" target="_self">Hvorfor 3</a><br> </div> </div> <div id="omenu3" class="menupunkt" onclick="showMenu(this);">hvem ved <div id="menu3" class="menu" onclick="event.cancel=true"> <a href="" target="_self">Hvorfor 1</a><br> <a href="" target="_self">Hvorfor 2</a><br> <a href="" target="_self">Hvorfor 3</a><br> </div> </div> </body>
Annonceindlæg fra XFlow
16. januar 2005 - 14:48
#1
f.eks. i javascript-blokken: document.onload = function(){ var l = document.getElementsByTagName("A"); for(i=0;l.length>i;i++){ if(l[i].parentNode.id.indexOf('menu')==0&&location.href.indexOf(l[i].href)>=0){ showMenu("o"+l[i].parentNode.id); break; } } } -- det kræver selvfølgelig, at du ikke har links, som er delmængder af andre ...
16. januar 2005 - 15:02
#2
Hmm jeg må erkende at jeg lige pt. er lidt blank her :-) hvordan skal det sættes sammen?
16. januar 2005 - 15:13
#3
I den javascript-blok, som allerede er der: <script language="javascript" type="text/javascript"> function showMenu(d){ var id = d.id.substring(5); divs = document.getElementsByTagName('DIV'); for(i=0;divs.length>i;i++){ if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; } st = document.getElementById('menu'+id).style; st.display = (st.display!='block')?'block':'none'; } window.onload = function(){ var l = document.getElementsByTagName("A"); for(i=0;l.length>i;i++){ if(l[i].parentNode.id.indexOf('menu')==0&&location.href.indexOf(l[i].href)>=0){ showMenu("o"+l[i].parentNode.id); break; } } } </script> -- og hov, der var en fejl ...
16. januar 2005 - 16:38
#4
Hmm den siger, id er null eller ikke et objekt??
16. januar 2005 - 16:44
#5
Så må du have links andre steder, hvor parentNoden ikke har et id, så: if(l[i].parentNode.id&&l[i].parentNode.id.indexOf('menu')==0&&location.href.indexOf(l[i].href)>=0){
16. januar 2005 - 16:49
#6
Har nu udskiftet den med ovenstående men den siger stadigvæk samme fejl? Hvad mener du med links andre steder hvor parentNoden ikke har id?
17. januar 2005 - 08:46
#7
Hej roenving, Har du en ide til hvad det kunne være som giver denne fejl.?
20. januar 2005 - 11:32
#8
Hej, har du eller andre en ide til hvordan fejlen kan løses? på forhånd tak.......
20. januar 2005 - 11:40
#9
Prøv at indsætte alerts foran de linjer hvor .id bliver brugt: alert(d.id); alert(divs[i].id); osv. Så kan vi få opklaret hvor fejlen sker !-)
20. januar 2005 - 12:31
#10
når jeg klikker på menu siger den f.eks. omenu2,
20. januar 2005 - 12:56
#11
Altså kommer fejlen efter det sted, hvor alerten sidder, så prøv den lidt senere ...
20. januar 2005 - 13:08
#12
Jeg har sat den her function showMenu(d){ alert(d.id); ...... og nu siger den undefined
20. januar 2005 - 13:12
#13
Ergo har d-parameteren en gyldig id-attribut ... Prøv så at indsætte den her: for(i=0;divs.length>i;i++){ alert(divs[i].id); if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; }
20. januar 2005 - 13:19
#14
Efter den har sagt at den er undefined så kommer fejlen og den anden alertbox bliver aldrig trikket....
20. januar 2005 - 13:25
#15
Så prøv med denne linje i stedet (og udkommentér alerten !-) if(divs[i].id&&divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none';
20. januar 2005 - 13:28
#16
den kommer stadigvæk med samme fejl!
20. januar 2005 - 13:31
#17
Når du gør sådan ?-) for(i=0;divs.length>i;i++){ //alert(divs[i].id); if(divs[i].id&&divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; }
20. januar 2005 - 13:40
#18
hmmm Ja :-) Men fejlen fremkommer stadigvæk.....
20. januar 2005 - 13:47
#19
Får du også fejl onload ?-)
20. januar 2005 - 13:52
#20
Nej den siger bare "id er null eller ikke et objekt"
20. januar 2005 - 13:59
#21
Har du sat // foran alerten ?-)
20. januar 2005 - 14:01
#22
yes det ser sådan ud: function showMenu(d){ var id = d.id.substring(5); divs = document.getElementsByTagName('DIV'); for(i=0;divs.length>i;i++){ //alert(divs[i].id); if(divs[i].id&&divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; } st = document.getElementById('menu'+id).style; st.display = (st.display!='block')?'block':'none'; } window.onload = function(){ var l = document.getElementsByTagName("A"); for(i=0;l.length>i;i++){ if(l[i].parentNode.id.indexOf('menu')==0&&location.href.indexOf(l[i].href)>=0){ showMenu("o"+l[i].parentNode.id); break; } } } </script>
20. januar 2005 - 21:04
#23
Er det ikke rigtigt hvor // er sat? Håber du snart du kan finde en løsning :)
21. januar 2005 - 09:29
#24
-- og den loader uden fejl ?-)
21. januar 2005 - 12:50
#25
Nej den loader MED fejl - "id er null eller ikke et objekt" ??
21. januar 2005 - 21:34
#26
Du siger bare til når du har et bud/svar så vi kan få det ud af verden :-) Har du prøvet at køre koden på din egen maskine? Jeg forstår ikke at det ikke virker...
24. januar 2005 - 09:51
#27
-- aha, jeg har forstået at fejlen først kom, når du prøvede at trykke på den, for min allerførste tanke var, at du havde links liggende andre steder, jvf. 16/01-2005 16:44:36 !-) -- men så kan vi jo checke begge steder: function showMenu(d){ var id = d.id.substring(5); divs = document.getElementsByTagName('DIV'); for(i=0;divs.length>i;i++){ //alert(divs[i].id); if(divs[i].id&&divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id)divs[i].style.display='none'; } st = document.getElementById('menu'+id).style; st.display = (st.display!='block')?'block':'none'; } window.onload = function(){ var l = document.getElementsByTagName("A"); for(i=0;l.length>i;i++){ if(l[i].parentNode.id&&l[i].parentNode.id.indexOf('menu')==0&&location.href.indexOf(l[i].href)>=0){ showMenu("o"+l[i].parentNode.id); break; } } }
24. januar 2005 - 13:27
#28
jeg får stadigvæk samme fejl når siden loades selvom jeg har brugt ovenstående kode
25. januar 2005 - 21:37
#29
ingen ide eller andre der kan hjælpe?
01. februar 2005 - 21:05
#30
hvaaa roenving har du opgivet ?
04. februar 2005 - 20:54
#31
Nå ser ud som om jeg må lukke spørgsmålet? er du helt sikker på du ikke har en ide ?
04. februar 2005 - 23:28
#32
jeg lukker spg.....
Vi tilbyder markedets bedste kurser inden for webudvikling