Menu pomocou JS

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Menu pomocou JS

Príspevok od používateľa weroro »

Ahojte,

snažím sa už hodnú chvíľu vytvoriť menu so skrytými DIVmi a stále mi to robí šarapatu.

Mam štyri položky v menu a štyri skryté DIV nad nimi. Keď kliknem na nejakú položku v tom menu, chcem aby sa mi zobrazil príslušný DIV a keď kliknem na tú istú položku ešte raz, aby sa ten DIV znovu skryl. Toto je jednoduché a funguje mi to. Problém nastane v tedy, keď zobrazím DIV položky 1 a kliknem na položku 2. V tedy potrebujem aby sa mi DIV1 skryl a hneď na to aby sa mi zobrazil DIV2. Toto mi však nefunguje a ja neviem prečo. Mám takého tušáka, že to keď sa zavolá

Kód: Vybrať všetko

document.getElementById('pomocne'+aktualna).style.visibility='hidden';
tak sa už nevykoná príkaz, ktorý nasleduje a to je:

Kód: Vybrať všetko

document.getElementById('pomocne'+objekt).style.visibility='visible';
Neviete mi prosím poradiť ako to mám spraviť? (jednoduché riešenie prosím a nie jquery a pod.)

Tu je JS, ktorý som napísal:

Kód: Vybrať všetko

<script type="text/javascript">
	var aktualna;
	function menuzobrazenie(objekt) {
		if (aktualna != objekt) {
			document.getElementById('pomocne'+aktualna).style.visibility='hidden';
			document.getElementById('pomocne'+objekt).style.visibility='visible';
			aktualna = objekt;
		} else {
			document.getElementById('pomocne'+objekt).style.visibility='hidden';
			aktualna = 'nic';
		}
	}
</script>
tu je Style:

Kód: Vybrať všetko

<style>
	#pomocne1, #pomocne2, #pomocne3, #pomocne4 {
												visibility:hidden;
												position:absolute;
												width:1000px;
												height:40px;
	}
	#pomocne1 {
				background-color:#ff0000;
				z-index:995;
	}
	#pomocne2 {
				background-color:#0000ff;
				z-index:996;
	}
	#pomocne3 {
				background-color:#00ff00;
				z-index:997;
	}
	#pomocne4 {
				background-color:#cccccc;
				z-index:998;
	}
</style>
Tu sú tie DIV, ktoré zobrazujem a skrývam:

Kód: Vybrať všetko

<div id="kontajner" style="position:relative; top:70px;">
		<div id="pomocne1"></div>
		<div id="pomocne2"></div>
		<div id="pomocne3"></div>
		<div id="pomocne4"></div>
</div>
a tu je menu z ktorého volám funkciu:

Kód: Vybrať všetko

<a href="#" onClick="menuzobrazenie('1');">p1</a>
<a href="#" onClick="menuzobrazenie('2');">p2</a>
<a href="#" onClick="menuzobrazenie('3');">p3</a>
<a href="#" onClick="menuzobrazenie('4');">p4</a>
Ďakujem

//autoeditácia príspevku (05 Mar 2011, 18:25)
Ajaj :D prepáčte mi, ale ja som nevedel že sa v JS nedá odkazovať na neexistujúci objekt (alebo prvok - neviem ako to nazvať v JS). Stačilo mi pridať ešte jeden DIV pomocne5, ktorý som neformátoval a slúži iba ako clean prvok. Potom mi stačilo len zmeniť premenu v scripte:

Kód: Vybrať všetko

<script type="text/javascript">
	var aktualna = '5';
	function menuzobrazenie(objekt) {
		if (aktualna != objekt) {
			document.getElementById('pomocne'+aktualna).style.visibility='hidden'
			document.getElementById('pomocne'+objekt).style.visibility='visible';
			aktualna = objekt;
		} else {
			document.getElementById('pomocne'+objekt).style.visibility='hidden';
			aktualna = '5';
		}
	}
</script>
už to funguje :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Menu pomocou JS

Príspevok od používateľa audiotrack »

celý ten javascript je blbo. Chybu si našiel správne, tam to skončí preto že máš v premennej aktualna hodnotu nic. Potom hladáš teda element podľa id 'pomocnenic' ktorý nenájde a preto to zkolabuje.
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Menu pomocou JS

Príspevok od používateľa weroro »

Blbo? Vieš to zapísať jednoduchšie?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Menu pomocou JS

Príspevok od používateľa audiotrack »

div5 je ti zbytočný, a javascript takto

Kód: Vybrať všetko

  <script type="text/javascript">
   var aktualna = null;
   function menuzobrazenie(objekt) {
         if(objekt != aktualna && typeof(aktualna) != "object" ) document.getElementById('pomocne'+aktualna).style.visibility='hidden';
         var i = document.getElementById('pomocne'+objekt);
         i.style.visibility = (i.style.visibility == 'hidden' || i.style.visibility == '') ? 'visible' : 'hidden';
         aktualna = objekt;
   }
</script>
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Menu pomocou JS

Príspevok od používateľa weroro »

Pekné. Nevedel som, že sa dá do premennej strčiť document.getElementById('pomocne'+objekt);

Veľmi pekne ďakujem (ospravedlňujem sa ak ti prišlo nevoľno z môjho kódu :D )
Napísať odpoveď