webForumDet fria alternativet

Trädmeny som stannar kvar när man klickat på en länk

JavaScript

8 svar · 1 699 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag har sökt som en galning och testat en massa olika sätt att lösa det på men jag lyckas inte. Vad jag vill ha är en sån här meny:
http://www.dhtmlcentral.com/script/script22_demo.html
Men grejen är den att jag vill inte att menyn ska fällas ihop när man klickat på en länk. Jag hittade en enklare meny än den jag länkat till här men nu hittar jag inte tillbaks till den. Det är denna senare meny jag har byggt min kod på.
Javascriptet:

<script type="text/javascript">
	var lastmenu=false;
	function changeStyle(Id,Property,Value){
		if (document.all){
			eval('document.all[Id].style.'+Property+'="'+Value+'"');
		} else if (document.layers){
			eval('document.layers[Id].'+Property+'="'+Value+'"');
		} else if (document.getElementById){
			eval('document.getElementById(Id).style.'+Property+'="'+Value+'"');
		}
	}
	function clickMenu(mnu){
		if(mnu==lastmenu){
			changeStyle(mnu,'display','none'); lastmenu=false;
		} else {
			if(lastmenu){ changeStyle(lastmenu,'display','none'); }
			changeStyle(mnu,'display','inline');
			lastmenu=mnu;
		}
	}
</script>

HTML-koden:

<a href='#' onClick="clickMenu('sub_1');return false;">Länk 1</a><br />

<div style='display:none;' id='sub_1'>
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=101'>Sublänk 1</a><br />
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=102'>Sublänk 2</a><br />
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=103'>Sublänk 3</a><br />
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=104'>Sublänk 4</a><br />
</div>

<a href='#' onClick="clickMenu('sub_2');return false;">Länk 2</a><br />

<div style='display:inline;' id='sub_2'>
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=203'>Sublänk 1</a><br />
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=202'>Sublänk 2</a><br />
	&nbsp;&nbsp;&nbsp;<a href='kategori.php?id=201'>Sublänk 3</a><br />
	<img src='layout/arrow.jpg' alt='' />&nbsp;<a href='kategori.php?id=205'>Sublänk 4</a><br />
</div>

Divven med 'display:none' och 'display:inline' genereras av PHP, den blir 'inline' ifall någon av sublänkarna är vald. I detta fall är ju sublänk 4 under länk 2 vald (den har fått en liten bild framför sig) och därför är divven under länk 2 satt till 'inline'.

Alltså egentligen funkar detta ganska bra, det enda är att när man klickar på den utfällda menyn (i detta fall på 'Länk 2') så händer inget vid första klicket, det blir först vid det andra klickat som menyn fälls ihop. Sjukt irriterande! :x
Vad kan jag göra åt detta? Tack på förhand!

Medlem sedan maj 2001797 inlägg
#2

Vet ingen hur jag ska göra? Jag vet inte hur jag ska beskriva det bättre än jag gjort. Jag tycker det borde gå att 'lura' länken så den tror att den är klickad på eller liknande, men jag vet inte hur man skriver det i javascript.

Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Jag har inget svar, men testade med onmouseover istället, med samma resultat.
Det verkar alltså som att något inte förstår att länken är klickad.

Ett sätt att komma runt det, men inte snyggt, är att lägga ett tomt lager som man måste gå över med musen, och då sätter igång funktionen.
Jag testade med onmouseover på översta länken, och då fungerar andra länken meddetsamma.

Men, det är inget du kan räkna med kommer fungera alltid.

Medlem sedan nov. 20041 189 inlägg
#4

Som på min sida
https://www.skolor.pedc.se/borgar/ ?

Medlem sedan apr. 20031 660 inlägg
#5

Troligen! :)

Eftersom jag inte var du har det, eller hur det ser ut utan, är det svårt att ha någon åsikt.

Kanske web00132 förstår bättre än mig!

Medlem sedan mars 2006296 inlägg
#6

Den här har jag använt mig av på ett par sidor nu, fungerar riktigt bra. (JS+CSS)
http://juicystudio.com/article/ecmascriptmenu.php
Javascriptet loopar igenom alla länkar i menyn och känner av vilken sida man är på och håller det menyalt. öppet.

Medlem sedan maj 2001797 inlägg
#7

Tack ska ni ha allihopa! :bire
echoSwe: Jag hittar ingen trädmeny på din sida?
Nate.A: Det verkar alldeles strålande, testar senare idag! :)

Medlem sedan maj 2001797 inlägg
#8

Nate.A: Din meny funkade skitbra, tackar! :bire

Red. Eller förresten, jag måste fråga en sak. Precis när sidan öppnas är hela menyn utfälld och när sidan laddat klart fälls den ihop så det blir liksom lite fladdrigt, har du löst det på nåt bra sätt?

Medlem sedan mars 2006296 inlägg
#9

Det är ett litet problem som uppstår i IE i FF så ser man inte den effekten.

En lösning, som inte är helt bra, är att man gömmer hela menyn med css genom lägga till

#minfinameny {display: none;}

och sedan lägger man till

objMenu.style.display = 'block';

i slutet på funktionen rollup() i javascriptet.

Nackdelen med detta är att de webläsare som inte har javascript igång men använder css inte kommer att se menyn över huvud taget.

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)