[JS] tree menu: onthouden waar je bent

Pagina: 1
Acties:

  • Paters
  • Registratie: Februari 2003
  • Niet online
Ik ben een beginner in javascript en daardoor loop ik tegen een probleempje aan. Ik heb namelijk een script van een tree menu. Wanneer ik echter op een link uit dit menu klik, wordt de link geopend maar sluit het menu zich. Weet iemand hoe ik het menu geopend kan houden zodat je kunt zien waar je bent?
code:
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
<script type="text/javascript">

if (document.getElementById){ //DynamicDrive.com change
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}

function SwitchMenu(obj){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("masterdiv").getElementsByTagName("span"); //DynamicDrive.com change
        if(el.style.display != "block"){ //DynamicDrive.com change
            for (var i=0; i<ar.length; i++){
                if (ar[i].className=="submenu") //DynamicDrive.com change
                ar[i].style.display = "none";
            }
            el.style.display = "block";
        }else{
            el.style.display = "none";
        }
    }
}

</script>


en:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id="masterdiv">

    <div class="menutitle" onclick="SwitchMenu('sub1')">Appels</div>
    <span class="submenu" id="sub1">
        - <a href="http://mijndomein.nl/mijnwinkel/shopping/?id=3">Rode appels</a><br>
        - <a href="http://mijndomein.nl/mijnwinkel/shopping/?id=4">Groene appels</a><br>
    </span>

    <div class="menutitle" onclick="SwitchMenu('sub2')">Peren</div>
    <span class="submenu" id="sub2">
        - <a href="http://mijndomein.nl/mijnwinkel/shopping/?id=5">Grote peren</a><br>
        - <a href="http://mijndomein.nl/mijnwinkel/shopping/?id=6">Kleine peren</a><br>
        
    </span>
    
</div>

Het menu sluit zich, volgens mij, omdat het menu opnieuw geladen wordt. Kan hier iets aan veranderen zodat dat niet meer gebeurt?

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 12:06
display none zegt je dat iets? ;)

Motor (of auto) onderhoud bijhouden


  • Paters
  • Registratie: Februari 2003
  • Niet online
dat zegt me wel iets :) Echter hoe kan ik er voor zorgen dat de laatst geopende daar blijft staan? (of stel ik nu een te n00b vraag ;))

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 15-05 22:53

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

door met cookies te werken \o/

opslaan welke menus open staan, en bij onload deze menu's weer openen.

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Verwijderd

Of je geeft de list een id (bv. 2_3_1) en link je naar /page?section=2_3_1. (Tweede node, dan de derde node en dan de eerste node). Dan kun je ervoor zorgen dat deze node wordt opengeklapt en ook al zijn anchestors.

  • Paters
  • Registratie: Februari 2003
  • Niet online
aha....je bedoelt dat ik achter de link dus de locatie van het menu moet zetten?

Verwijderd

Maar kijk wel uit, er zit een bug in IE waardoor je sessions worden geplet door een maximum aantal cookie bug. Ik weet niet meer de complete details, maar hij zit er in. Dus als je opeens je session kwijt bent dan weet je waardoor het komt.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:33

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 20 januari 2005 @ 17:07:
Maar kijk wel uit, er zit een bug in IE waardoor je sessions worden geplet door een maximum aantal cookie bug. Ik weet niet meer de complete details, maar hij zit er in. Dus als je opeens je session kwijt bent dan weet je waardoor het komt.
Da's geen bug; elke browser heeft beperkingingen mbt het aantal cookies per domein en de maximale grootte van een cookie (meestal 4KB).

Intentionally left blank


Verwijderd

Paters schreef op donderdag 20 januari 2005 @ 17:02:
aha....je bedoelt dat ik achter de link dus de locatie van het menu moet zetten?
Ja, dan kan je uit de url halen welke node geopend moet zijn. Ik raad je aan om zelf het menu te maken op een correctere manier dmv. <ul>'s. Styles kun je zelf wel uitvogelen.

prutscode:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<ul id="ul-1">
    <li id="1_1">
        <ul id="ul-1_1">
            <li id="1_1_1"><a href="page.html?content=nicepage&amp;m=1_1_1">Blah</a></li>
            <li id="1_1_2"></li>
        </ul>
    </li>
    <li id="1_2">
        <ul id="ul-1_2">
            <li id="1_2_1"></li>
        </ul>
    </li>
    <li id="1_3"></li>
</ul>
<ul id="ul-2">
    <li id="2_1"></li>
</ul>
etc.

Verwijderd

je kan ook per pagina aangeven waar je zit,
en naar aanleiding daarvan je menu renderen.


zoiets:

code:
1
2
3
4
5
6
7
8
9
10
<script language="javascript" type="text/javascript">

 // set current navigation 
 var hoofdnavigatie=4;
 var subnavigatie=2;
 var subsubnavigatie=6;

 drawnavigatie(hoofdnavigatie, subnavigatie, subsubnavigatie);

</script>

[ Voor 23% gewijzigd door Verwijderd op 20-01-2005 18:32 ]


Verwijderd

crisp schreef op donderdag 20 januari 2005 @ 17:59:
[...]

Da's geen bug; elke browser heeft beperkingingen mbt het aantal cookies per domein en de maximale grootte van een cookie (meestal 4KB).
Dat zowiezo ja, maar specifiek voor IE was er een bug. Ik heb het hier met Erik Arvidsson over gehad aangezien hij dit probleem had in zijn xtree code. Ik moet je de details helaas schuldig blijven, ik weet alleen dat het bestaat ik zal hem daarvoor eventjes moeten vragen wat het was.

[ Voor 15% gewijzigd door Verwijderd op 20-01-2005 18:56 ]

Pagina: 1