FraFu: dynamische eventhandler

Hallo!

Ich habe zb:

<span id="myspan" onMouseClick="mouseClick(this);">

Diesen onMouseIver Eventhandler würde ich gerne dynamisch erzeugen. Das Problem ist aber das Erzeugen von Parametern.

document.getElementById('myspan').onmouseover=mouseClick(this);
funktioniert ja nicht. Die Funktion würde sofort aufgerufen werden.

Das Problem ist, ich habe 1-N span Elemente die alle denselben onClick Eventhandler haben. Im Eventhandler muss ich wissen welcher Span geklickt wurde. Daher übergebe ich das this Objekt.
Wenn ich den Eventhandler dynamisch erzeuge, kann ich aber keine Parameter übergeben und ich weiß nicht, welches Spanelement angeklickt wurde.
Hat jemand eine Lösung für mich?

mfg
  frafu

  1. Hallo,

    document.getElementById('myspan').onmouseover=mouseClick(this);
    funktioniert ja nicht. Die Funktion würde sofort aufgerufen werden.

    versuch mal sowas:
    document.getElementById('myspan').onmouseover=function(){mouseClick(this);}

    Zur Not gibt es dann noch eval, vmtl. so ähnlich:  ...{eval(mouseClick(this)).

    Grüsse

    Cyx23

    1. Hallo!

      versuch mal sowas:
      document.getElementById('myspan').onmouseover=function(){mouseClick(this);}

      Danke! Das ist es!

      mfg
        frafu

      1. Hallo!»» Hallo!

        versuch mal sowas:
        document.getElementById('myspan').onmouseover=function(){mouseClick(this);}

        Danke! Das ist es!

        Alles zurück! Das funktioniert nur in diesem speziellem Fall, da this sowieso übergeben wird!

        mfg
          frafu

        1. Hallo.

          Alles zurück! Das funktioniert nur in diesem speziellem Fall, da this sowieso übergeben wird!

          Ja? Oder funktioniert es auch anders, da this  sowieso übergeben wird?

          Grüsse

          Cyx23

        2. versuch mal sowas:
          document.getElementById('myspan').onmouseover=function(){mouseClick(this);}

          Danke! Das ist es!

          Alles zurück! Das funktioniert nur in diesem speziellem Fall, da this sowieso übergeben wird!

          Funktionieren tut das so oder so. Das Beispiel zeigt aber darüber hinaus wie du einen x-beliebigen Parameter übergeben könntest.

          Struppi.

          1. Hallo!

            Alles zurück! Das funktioniert nur in diesem speziellem Fall, da this sowieso übergeben wird!

            Funktionieren tut das so oder so. Das Beispiel zeigt aber darüber hinaus wie du einen x-beliebigen Parameter übergeben könntest.

            Ja, du hast recht. Als ich gerade versucht habe ein ganz einfaches Beispiel als "Beweis" zu bauen, bin ich auf meinen Denkfehler drauf gekommen.

            Beispiel:
            Zum Button btn soll ein onClick Handler hinzugefügt werden.

              
            function init() {  
             var btn=document.getElementById('btn');  
             var i=5;  
             btn.onclick=function(){alert(i);};  
             i=10;  
            }  
            
            

            Beim Hinzufügen des Eventhandlers hat i den Wert 5, beim anklicken aber 10. Mit diesem einfachen Beispiel ist das Verhalten völlig logisch. In meinem Fall hab ich aber kein Skalar als Parameter, sondern ein Objekt, das später auch noch verändert wird.
            Darum bin ich nicht gleich draufgekommen, wo mein Fehler liegt.

            Umgelegt auf dieses einfache Beispiel bin ich davon ausgegangen, dass alert mit dem Wert 5 aufgerufen wird. Ist natürlich Blödsinn.

            mfg
              frafu

  2. document.getElementById('myspan').onmouseover=mouseClick(this);
    funktioniert ja nicht. Die Funktion würde sofort aufgerufen werden.

    Das Problem ist, ich habe 1-N span Elemente die alle denselben onClick Eventhandler haben. Im Eventhandler muss ich wissen welcher Span geklickt wurde. Daher übergebe ich das this Objekt.
    Wenn ich den Eventhandler dynamisch erzeuge, kann ich aber keine Parameter übergeben und ich weiß nicht, welches Spanelement angeklickt wurde.
    Hat jemand eine Lösung für mich?

    Ja, du brauchst keinen Parameter den in der Funktion ist this = dem Objekt.

    document.getElementById('myspan').onmouseover = mouseClick;  
      
    function mouseClick(e)  
    {  
    alert(this.id);  
    }
    

    Struppi.

    1. Hallo!

      Ja, du brauchst keinen Parameter den in der Funktion ist this = dem Objekt.

      document.getElementById('myspan').onmouseover = mouseClick;

      function mouseClick(e)
      {
      alert(this.id);
      }

        
      Oha! Danke! Da hab ich wohl zu kompliziert gedacht.  
        
        
      mfg  
        frafu