molily: wie bekomm ich die id des elments?

Beitrag lesen

Hallo,

<a id="something" href="javascript:loadContent('something', this.id);">blabla</a>

nun bekomm ich jedoch mit this.is nicht die id dieses elments! warum?
sollte this nicht jenes element repräsentieren?

Nein.

Wie Cheatah sagt, wird der Code nicht im Kontext des a-Elements ausgeführt und this zeigt daher auch nicht auf das Anker-Elementobjekt.

leider kann ich onclick nciht verwenden da auch dieser verweis in JS generiert wird!

Kein Problem.

dies mach ich aus dem grunde da der IE kein

anchors[i].setAttribute("onClick", "loadContent('"+temp_a+"', this.id);");

dynamisches generieren von eventhandler zulässt!

Stimmt, du kannst das aber auch anders notieren. Am besten speicherst du in so einem Fall die gewünschten Informationen als eigene, neue Eigenschaften am jeweiligen Element. (Dafür plädiere ich jedenfalls - ich finde Lösungen wie die von nils vorgestellte nicht so elegant.)

In deiner Schleife:
anchors[i].eigenschaft = variable;
(Zum Beispiel was bei dir temp_a war)

Dann als Handler einfach:

function handler (eventobjekt) {
   alert(this.id); // Falls du die ID brauchst
   alert(this.variable); // Hier hast du dann Zugriff auf die jeweilige Variable
}

Vorteile:

  • Du brauchst keine ID, um das Element anzusprechen, du sprichst es über this an. Aber du kannst auch auf die ID zugreifen, falls sie einen darüber hinaus gehenden Zweck hat.
  • Du brauchst keinen Event-Handler dynamisch generieren. Es gibt eine Handlerfunktion, die sich die Infos vom Element holt.
  • Das href-Attribut kannst du sinnvoll füllen, sodass der Link auch funktioniert, wenn JavaScript nicht aktiviert/verfügbar ist. Wenn du nicht willst, dass beim Klicken auf den Link auf noch diese href-Adresse angesprungen wird, kannst du return false; an das Ende der Handler-Funktion schreiben (das unterbindet die Standard-Behandlung des click-Ereignisses).

Mathias

--
»No nations, no borders.«
SELFHTML Weblog