Peter: JavaScript: Probleme mit dem Event eines Buttons

Hallo Forum,

ich stehe gerade auf der (langen) Leitung - wahrscheinlich ist die Lösung einfach, aber ich finde nichts dergleichen, was mir gerade hilft. :-(

Ich generiere in einem JavaScript ein div und einen Button, die ich dann ins DOM hänge:

mydiv = document.createElement( "div" );

mybtn = document.createElement( "button" );
mybtn.innerHTML = "Button";
mybtn.addEventListener( "click", function(){ doSomething(); });

mydiv.appendChild( mybtn );
document.body.appendChild( mydiv );

Nach Laden und Start des Scripts sehe ich auch div undButton. Klicke ich den Button aber dann, erfolgt keine Reaktion (Die Funktion doSomething gibt es.)

Ändere ich das Skript wie folgt und hänge den Button ohne "mydiv" ins DOM, fumnktioniert der Button:


document.body.appendChild( mybtn );

Ich stehe gerade echt auf dem Schlauch und würde mich über einen Schubs in die richtige Richtung freuen.

  1. Hallo Peter,

    Ich kann gerade nicht probieren, aber versuche doch mal, erst Button und div ins Dokument zu hängen und dann erst den Event Listener zu registrieren.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      danke für den Tipp. Aber leider bringt das auch nichts.

      Beste Grüße, Peter

      1. Hallo Rolf,

        ich hab's gelöst. Es gab noch einen Konflickt mit einem anderen MouseEventListener. Den muss ich removen, wenn der Cursor das GUI-Div "entered". Danach funktioniert auch der Button.

        Wie immer. kleine verstekcte Ursache :-(

        Aber ich danke Dir trotzdem für Deinen Tipp.

        Beste Grüß, Peter

        1. Hallo Peter,

          Das klingt nach einer Umgehungslösung und sollte nicht nötig sein.

          Kannst du die Seite oder eine Nachstellung des Problems online stellen?

          Rolf

          --
          sumpsi - posui - obstruxi
  2. Moin Peter,

    das,

    mybtn.addEventListener( "click", function(){ doSomething(); });
    

    wäre auch noch kürzer möglich:

    mybtn.addEventListener("click", doSomething);
    

    Viele Grüße
    Robert

    1. Hallo Robert,

      vor allem zeigt this dann auf das Eventtarget. Auch wenn ich lieber den event Parameter verwende - aber bei deinem Absatz bekommt man den immerhin

      Rolf

      --
      sumpsi - posui - obstruxi