ugrás a tartalomhoz

Miért csak második kattintásra működik a függvény?

Velias9 · 2008. Feb. 6. (Sze), 17.23
A problémám a következő:
Adott egy JavaScript kód:

...

function nyitogato(azonosito)
{
   if (document.getElementById(azonosito).style.display == "none")
   {
      document.getElementById(azonosito).style.display = "block";
   }
   else
   {
      document.getElementById(azonosito).style.display = "none";
   }
}

...
És egy HTML kód:

...

<a href="javascript:nyitogato('kinyitando')">Ide kattintva kéne kinyílnia</a>
<div id="kinyitando">Itt vannak az elrejtett elemek</div>

...
És a hozzá tartozó CSS:

...

#kinyitando
{
   display: none;
}

...
Amikor az oldal betöltődése után először kattintok a hivatkozásra nem történik semmi. Másodszorra viszont már működik.
Légyszíves segítsetek, nem tudom mi a baj.

Előre is köszi minden segítségért.
 
1

elsore

ksgy · 2008. Feb. 6. (Sze), 17.54
...azt mondom a nyitogato elejen a
document.getElementById(azonosito).style.display
-t alerteld, vagy logoltasd ki, es meglatod mi a problem :)
2

semmi

Velias9 · 2008. Feb. 6. (Sze), 18.10
Kialertoltam és nem írt ki semmit!
Na de miért?
4

css vs style

ksgy · 2008. Feb. 6. (Sze), 18.38
Mert ha element.style-bol olvasol ki, akkor az <elem stye="...-bol olvasod ki az adatot. Az elso korben az else agba megy bele, beallit neki none-t, es utana fogja csak "latni", hogy none.
Egyszeru a megoldas:
if (document.getElementById(azonosito).style.display == "none" || document.getElementById(azonosito).style.display == "")
3

még valami

Velias9 · 2008. Feb. 6. (Sze), 18.13
Több doboz is van, amire alkalmazom ezt a függvényt és a többinél sem működik. Azonban, ha egyet lefuttatok már működik a többi is.
5

jquery...

TeeCee · 2008. Feb. 7. (Cs), 07.48
...-vel sokkal egyszerűbb lenne...

"javascript:nyitogato('kinyitando')"
helyett:
"$('kinyitando').toggle();"

Amúgy miért nem onclick-re rakod, miért href-re?
<a nohref onclick=""></a>
6

jquery, nohref

gex · 2008. Feb. 7. (Cs), 12.43
ha már jquery-vel sokkal könnyebb lenne, akkor azt is megemlíthetted volna, hogy jquery-vel lehet eseményeket is hozzárendelni, nem kell az az onclick. az a elem nohref attribútuma meg nem tudom melyik szabvány része, szerintem egyik elterjedté (html 4, xhtml 1) sem.
7

jQuery?

Velias9 · 2008. Feb. 7. (Cs), 16.42
Azért nem onClick-et használtam, mert nem tudtam a nohref attribútumról (ha tényleg szabványos amúgy) és nem akartam href="#"-et használni, mert összerondítja a hivatkozást.

A másik, ami jobban érdekelne, hogy a jquery (asszem a "$('kinyitando').toggle();" az az, igaz?) hogyan működik és mire használható? Légyszi írja meg valaki, mert nem tudom, hogy hogy működik és már több helyen is láttam.

Amúgy köszi mindenkinek a válaszokért!
8

jquery = framework

gex · 2008. Feb. 7. (Cs), 18.03
a jquery az egy javascript framework, ami egyrészt leegyszerűsíti a nap mint nap használt kódokat (pl új függvényekkel), másrészt elfedi előled a különböző böngészők eltérő viselkedését. használta annyiból áll, hogy beszúrsz egy <script type="text/javascript" src="/js/jquery.js"></script> sort a html head részébe és elkezded használni a jquery által definiált függvényeket. nagyon jó dokumentációt írtak hozzá, gyakorolni meg kiválóan lehet a firebug konzoljával.