Andreas: aufrufendes HTML-Element identifizieren

Hallo,

Ich möchte mit
<a onclick="funktion()">Link</a>
eine Funktion aufrufen.

Innerhalb der Funktion möchte ich das Element, aus dem die Funktion aufgerufen wurde (hier also das a-Element), eindeutig identifizieren.

Ich stelle mir dann z. B. vor, dass ich mit diesesElement.style.display="none" das Element durch einen Klick unsichtbar mache.

Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.

Die einzige Lösung die ging, war jedem a eine id zu verpassen und dann onclick="funktion(this.id)" zu notieren. Das möchte ich aber vermeiden, da ich eine sehr lange Liste mit Links haben werde, die ich flexibel umändern möchte. Dann müsste ich ständig irgendwelche ids vergeben.

Wer weiß Rat?

Andreas

  1. Hallo,

    ich würde an Deiner Stelle der aufgerufenen Funktion den Event selbst mitgeben:
    <a href="#" onclick="doSomething(event); return false;">Klick</a>

    Dann kannst Du in doSomething() auf alle Methoden und Eigenschaften des Events zugreifen, u.a. auch auf den Auslöser des Events.

    Siehe: http://www.quirksmode.org/js/events_access.html und http://www.quirksmode.org/js/events_properties.html.

    Ciao,
    Andreas

  2. Lieber Andreas,

    Ich möchte mit
    <a onclick="funktion()">Link</a>
    eine Funktion aufrufen.

    Verstanden.

    Innerhalb der Funktion möchte ich das Element, aus dem die Funktion aufgerufen wurde (hier also das a-Element), eindeutig identifizieren.

    ... naja, vielleicht brauchst du das ja nicht... mal sehen.

    Ich stelle mir dann z. B. vor, dass ich mit diesesElement.style.display="none" das Element durch einen Klick unsichtbar mache.

    Verstanden.

    Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.

    Was genau tust Du denn damit? Ich könnte mir vorstellen, dass das mit this.style.display = none; klappen sollte. Probier's doch mal aus!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hi,

      Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.
      Was genau tust Du denn damit? Ich könnte mir vorstellen, dass das mit this.style.display = none; klappen sollte. Probier's doch mal

      ich nehme nicht an, dass es sich bei der Funktion um etwas handelt, das über ein Objekt namens "style" verfügt, dessen Eigenschaft "display" den Wert einer "none" genannten Variable annehme möchte.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  3. Innerhalb der Funktion möchte ich das Element, aus dem die Funktion aufgerufen wurde (hier also das a-Element), eindeutig identifizieren.

    ...

    Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.

    Doch das klappt.

    Struppi.

  4. Tag Andreas.

    Innerhalb der Funktion möchte ich das Element, aus dem die Funktion aufgerufen wurde (hier also das a-Element), eindeutig identifizieren.

    Das aktuelle Elementobjekt übergibst du, wie schon erkannt, mit dem Schlüsselwort "this".

    Ich stelle mir dann z. B. vor, dass ich mit diesesElement.style.display="none" das Element durch einen Klick unsichtbar mache.

    Ja, genauso funktioniert das.

    Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.

    Keine Ahnung, wo dein Denk- oder Schreibfehler liegt, deswegen poste ich einfach mal ein kleines Beispiel:

    Javascript-Funktion im Kopfbereich:

    function testit(obj) {  
      alert(obj.href);  
      obj.style.display = "none";  
    }
    

    Code im Körper der HTML-Datei:

    <a href="testseite1.html" onclick="testit(this); return false">Testlink 1</p>  
    <a href="testseite2.html" onclick="testit(this); return false">Testlink 2</p>
    

    Siechfred

    1. hi,

      Wenn ich onclick="funktion(this)" notiere und dies dann in der Funktion abfange, klappt es nicht.

      Keine Ahnung, wo dein Denk- oder Schreibfehler liegt

      vermutlich darin, dass der parameter in der funktionsdefinition ebenfalls this genannt wurde, und in der funktion dann auch mit this.irgendwas gearbeitet wurde.
      dass dies zu konflikt mit dem "eingebauten" this von javascript, welches in der funktion auf diese selber referenziert, führt, ist abzusehen.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }