Linuchs: this.parentNode.tagName gibt Fehler

Guten Morgen,

in der folgenden Konstellation springt das Programm bei Klick auf "Preghiera" in eine Funktion. In der Funktion möchte ich die id des img ermitteln.

<li style="left:45%; top:78%"><img id="I-33050 Ruda" class=ic_kl src='img/ball_rot.gif' alt='o'>  
	<ul class=lu>  
	<li><a href="http://[HOST]/?LO=kompakt&amp;KM=100&amp;ORT=13699[&lang]">I-33050 Ruda</a></li>  
	<li><a class=sound href="javascript:alert('['+this.parentNode.tagName+']');playMedium_code(this,'716.e7f8a7fb')">Preghiera (G. Rossini) - Coro Polifonico di Ruda</a></li>  
	</ul>  
</li>  

Deshalb übertrage ich "this" in die Funktion und versuche dort, mich mit parentNode.parentNode hochzuhangeln.

Doch schon das zu Testzwecken eingeschobene this im alert wirft Fehler:

Uncaught exception: TypeError: Cannot convert 'this.parentNode' to object
Error thrown at line 1, column 0 in program code:
    alert('['+this.parentNode.tagName+']');

Das verstehe ich nicht. Wie wird this denn angewendet?

Linuchs

  1. Hallo,

    <a class=sound href="javascript:alert('['+this.parentNode.tagName+']');playMedium_code(this,'716.e7f8a7fb')">Preghiera (G. Rossini) - Coro Polifonico di Ruda</a>

    du erwartest vermutlich, dass this hier das a-Elementobjekt ist. Das wäre der Fall, wenn du den Funktionsaufruf als Eventhandler notierst, nicht aber wenn er das "Ziel" des Links ist. Dann ist this das window-Objekt.

    Das verstehe ich nicht. Wie wird this denn angewendet?

    Siedle es in einen onclick-Eventhandler um, und lass das href-Attribut weg. Wobei es dann IMO semantisch schlauer wäre, statt des Links ein a-Element zu nehmen.

    Ciao,
     Martin

    --
    F: Was ist schlimmer: Alzheimer oder Parkinson?
    A: Parkinson. Lieber mal ein Bier vergessen zu zahlen, als eins verschütten.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      du erwartest vermutlich, dass this hier das a-Elementobjekt ist.

      Ja.

      Das wäre der Fall, wenn du den Funktionsaufruf als Eventhandler notierst, nicht aber wenn er das "Ziel" des Links ist. Dann ist this das window-Objekt.

      Siedle es in einen onclick-Eventhandler um, und lass das href-Attribut weg. Wobei es dann IMO semantisch schlauer wäre, statt des Links ein a-Element zu nehmen.

      Ja danke, jetzt läuft's rund.

      Linuchs

    2. Moin,

      Wobei es dann IMO semantisch schlauer wäre, statt des Links ein a-Element zu nehmen.

      Quatsch im Quadrat.
      Ich meinte natürlich: "... statt des Links ein button-Element zu nehmen."

      So long,
       Martin

      --
      Finanztipp:
      Leihen Sie sich Geld von einem Pessimisten.
      Er rechnet sowieso nicht damit, dass er es zurückbekommt.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(