ugrás a tartalomhoz

Kinyit becsuk, javascript probléma

dc-hungary · 2008. Május. 15. (Cs), 19.46
Üdv!
az alábbi oldalon van fent a script, (bal oldalt)

http://kulonlegesajandek.hu/index.php

Próbáljatok rányomni egy kategóriára, pl bögre, aztán azon belül magic bögre.. és amint látjátok a bal oldalon amire rákattintottatok eltűnik
szóval én ezt úgy szeretném, nemtom érthető-e, hogy amikor rámész egy főkategóriára, azon belül alkategóriára, akkor a főkategória és az ahhoz tartozó alkategóriák legyenek kilistázva, hogy lássa az illető, hogy épp melyik kategóriát böngészi..

íme a script:
<script type="text/javascript">
function kinyit_becsuk(id) {
		disp = document.getElementById(id).style.display;
 
		if(disp == "none") {
			document.getElementById(id).style.display = "block";
		} else {
			document.getElementById(id).style.display = "none";
		}
}
</script>
<a href="javascript:kinyit_becsuk("lenyilo{1}");'>Első főkategória</a><br>
<a href="javascript:kinyit_becsuk("lenyilo{2}");'>Második főkategória</a>

<div  id='lenyilo{$num}' style='display: none;'>
<li><a href="?action=valami">alkategória..</a></li>
</div>
ez nem a teljes script, csak kiszedtem a lényeget, szóval az enyém mysql-t használ meg stb..

ebben is ha kipróbáljátok elvileg működnie kéne, hogy rákattoltok az alkategória.. szövegre, amikor kinyitottad a főkategóriát, akkor elvisz a ?action=valami oldalra, és ami az előbb még kivolt nyitva kategória, az becsukódik

hát nem túl jó a magyarázó képességem, de próbáltam érthető lenni

:)
 
1

nemjo script

dc-hungary · 2008. Május. 15. (Cs), 19.49
a bemásolt scriptem nem működik , de a belinkelt oldalon láthatjátok ezt élőbe..
2

Probléma-megoldás

janoszen · 2008. Május. 15. (Cs), 20.37
Mi lenne, ha a scriptek bemásolása helyett megpróbálnál egy kis probléma-megoldó készséget felhozni? Mondjuk pl föltenni a Firefox+Firebug kombót, amiben prímán láthatnád, hogy lenyilo{1} nevü div nincs is? id='lenyilo{$num}'-ot ki kellene cserélni id='lenyilo{1}'-re és akkor lehet, hogy menne? De egyébként azt gondolnám, hogy a {} se kell oda.

Ha visszanézem a követőben a kérdéseidet, mindenhonnan összemásolsz mindenféle scripteket, meg merem kockáztatni az eredeti tulajdonos és megolkotó megkérdezése nélkül és ha problémába futsz, a megoldás helyett (mert erre nem tettél utalást, hogy megpróbáltad volna) földobod, hogy oldja meg valaki más helyetted. Főleg, hogy ha megnézed az eredeti oldalt, akkor ott úgy van csinálva, ahogy javasoltam, nem tudom, honnan jött Neked ez a {$num}
3

Nem teljesen értem.

s_volenszki · 2008. Május. 15. (Cs), 20.40
Hali!

Nem teljesen értem a script-et amit bemásoltál, valamilyen jQuery vagy Prototype maradványok vannak benne. Ha te sem tudod pontosan, hogy mit keresnek ott, elég elképzelhetetlen, hogy megtalálod a hiba okát!

Ennek ellenére azt mondom, gondolt át logikusan! Ismerünk két alapvető dolgot:

1. Tudjuk, hogy egy DIV elemnek van olyan stílus tulajdonsága, amivel elrejteni és megjeleníteni lehet, konkrétan a display
2. Tudjuk azt, hogy hogyan lehet egy tetszőleges DIV elem display tulajdonságát dinamikusan változtatni, konkrétan a DIV elem azonosítójával elérhetjük azt.

Tehát ha van egy DIV-ed:

...
<div id="lenyilo_1" style="display:none">
   Tartalom
</div>
...
akkor ez js-ből elérve

...
kinyitni = document.getElementById('lenyilo_1').style.display;
...
és a feltétel:

...
if(kinyitni == "none")
{
   document.getElementById('lenyilo_1').style.display = 'block';
}
else
{
   document.getElementById('lenyilo_1').style.display = 'none';
}
...
majd a funkció:

...
function kinyit_becsuk(id)
{
    var kinyitni = document.getElementById(id).style.display;
    if(kinyitni == "none")
    {
       document.getElementById(id).style.display = 'block';
    }
    else
    {
       document.getElementById(id).style.display = 'none';
    }
}
...
s_volenszki
6

Hasonló probléma űrlapnál

ZoliWR · 2008. Május. 29. (Cs), 17.59
Sziasztok!

Ne haragudjatok, hogy belepofázok, de nekem is hasonló a problémám!
Nálam annyi a különbség, hogy egy űrlapon kéne egy választómenüből olyat kihozni, hogy ha pl. az "igen"-t választja a látogató, akkor lenyílik újabb 5db űrlapmező. Remélem érthetően irtam le.

Ja és Firefox alatt is mennie kéne természetesen :)

Én az alábbit probáltam, de nem jó sajnos:

<script language="JavaScript" type="text/javascript">
function megjelenit(){

if (document.getElementById("teher").options.value==1)
document.getElementById("rejtett").style.display="";
else
document.getElementById("rejtett").style.display="none";

}
</script>


<form action="" method="post">
Teher: <select id="teher" name="teher" onChange="megjelenit()">
  <option value="0">nem</option>
  <option value="1">igen</option>
  </select><br>

  <div id="rejtett" style="display:none;">
Milyen teher:<input name="mezo1" type="text"><br>
Mióta:<input name="mezo2" type="text"><br>

  </div>
</form>
Viszont még annyi lenne, hogy ez elvileg működik, de ha már több ilyet szeretnék létrehozni egy űrlapon belül, akkor már nem megy a második.

Köszönöm előre is, nagyon sűrgős lenne a válaszotok!
Köszi!

Zoli
7

block

s_volenszki · 2008. Május. 29. (Cs), 22.56
Lemaradt a block érték a js-ben, amikor láthatóvá akarod tenni.

Egyébként a fent kidolgozott példa tökéletesen alkalmas a te feladatodra.
8

block-ot

toxin · 2008. Május. 30. (P), 08.04
nem szokták beállítani, lásd pl. prototype:

  hide: function(element) {
    $(element).style.display = 'none';
    return element;
  },

  show: function(element) {
    $(element).style.display = '';
    return element;
  },
inline vs blokk elemek esetén, inline elem is blokk típusúvá válna :
	<head>		
		<script type="text/javascript">			
			window.onload = function(){				
				function flashing(elems,counter){
					counter && setTimeout(function(){
						for (var elem in elems)
							elems[elem].style.display = elems[elem].style.display != "none" ? "none" : "";
						flashing(elems,--counter);
					},500);
				};
				flashing ([document.getElementById("foo"),document.getElementById("foo2")],10);
			};
		</script>
	</head>
	<body>
		<span> ebben egy inline elemet kapcsolgatunk ki/be <span id="foo" style="font-size:200%;"> ezt </span></span>
		<div id="foo2"> ez meg blokk elem</div>
	</body>
üdv Csaba
9

Ezt nem tudtam...

s_volenszki · 2008. Május. 30. (P), 09.59
Köszi, ezt nem tudtam! Így ismét kevesebb lehet a kódom néhány bájttal! :)
4

segítünk, ahol tudunk!

rudo · 2008. Május. 15. (Cs), 22.30
és, ha ez a probléma ilyen könnyen megoldódott, akkor gyorsan elébe is megyek a következő kérdésednek:

igen valóban "törölközőnek" kell irni helyesen és nem "törülközőnek"! a töröl a szótő ;)
5

nem

dc-hungary · 2008. Május. 16. (P), 05.20
mind a kettő formában helyes ez a szó..