Patrick Andrieu: Hilfe zum Verständnis

Beitrag lesen

Hallo alle!

Im body einer Website befinden sich vier Elemente mit IDs, die sich nur durch eine Zahl unterscheiden, etwa so:

id="elem_1", id="elem_2", usw.

In einer Funktion, die beim Laden aufgerufen wird, "get" ich sie mit Hilfe einer Schleife wie folgt (in diesem Fall weiß ich, dass es 4 Elemente sind, welche diese ID-Struktur haben):

  
  for (var i=1;i<=4;i++) {  
    dc.getElementById('elem_'+i).style.visibility="visible";  
  }  

Soweit so gut, alle versteckte Elemente (hatten visibility:hidden) werden angezeigt.

Nächster Schritt:

  
  for (var i=1;i<=4;i++) {  
    dc.getElementById('elem_'+i).onclick = alert('elem_'+i);  
  }  

Hier poppen beim Aufruf der Seite nacheinander 4 Alertboxen mit als respektive+m Inhalt elem_1, elem_2 usw., soweit auch korrekt, aber erste Frage:

Warum gehen die Boxen beim Aufruf der Seite auf, da hat doch nirgends ein Klick stattgefunden? Zwar wird die Funktion beim Laden aufgerufen, aber ich habe doch onclik definiert?

Wieder nächster Schritt:

  
  for (var i=1;i<=4;i++) {  
    dc.getElementById('elem_'+i).style.visibility="visible";  
    dc.getElementById('elem_'+i).onclick = function() { alert('elem_'+i); };  
  }  

Die vier Elemente werden sichtbar gemacht. Nur, egal welchen ich anklicke, erhalte ich im Alert elem_5, also elem_ und der höchstmögliche Wert von i nach Durchlauf der Schleife (4+1). Ich hätte hier eher erwartet, dass beim Klick auf einem Element die entsprechende ID im Alert ausgegeben wird. Daher zweite Frage:

Wie kann ich erreichen, dass beim Klick auf einem der vier Elemente eine Funktion (die ich hier für's Beispiel durch die alert() ersetzt habe) aufrufen, die auf den entsprechenden Wert von i angewiesen ist?

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
<hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>