Johann Flori-Himpel: Eventhandler zu dynamisch angelegte Buttons bei MSIE

Hallo Gemeinde,

Das folgende Script funktioniert tadellos unter Netscape 6.
Es legt dynamisch Buttons an und weist dynamisch eine Funktion zu,
die beim Maus-Click tatsächlich ausgeführt wird.

Im MSIE werden zwar die Buttons angelegt (ohne Fehler-Meldung);
aber die Reaktion auf den Maus-Click erfolgt nicht.

Gibt es da ein grundsätzliches Problem oder kann mir jemand sagen,
wie ich es unter dem MSIE trotzdem hin kriege?

vielen Dank für alle Bemühungen

flo

<html>
<head>
<title>Dynamische Buttons</title>
<meta name="author" content="flo">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">

<script language="JavaScript">
<!--
  function SETATB(OB, ATB, VAL)
  { var NewATB = document.createAttribute(ATB) ;
    NewATB.nodeValue = VAL;
    OB.setAttributeNode(NewATB);};

function init()
  {
    var Par = document.getElementById("btnpar")

var BTN = document.createElement("button");
    var TXTBTN = document.createTextNode("Button-Button");
    SETATB(BTN, "onClick", 'sayHello("Button")');
    BTN.appendChild(TXTBTN);

Par.appendChild(BTN);

var INP = document.createElement("input");
    SETATB(INP, "type", "button");
    SETATB(INP, "onClick", 'sayHello("Input")');
    INP.value = "Input-Button";

Par.appendChild(INP);
  };

function sayHello(who)
  {alert("Hello from " + who);};
-->
</script> </head>

<body onload="init()">
  <p id="btnpar"></p>
</body></html>

  1. Hallo,

    Gibt es da ein grundsätzliches Problem oder kann mir jemand sagen,
    wie ich es unter dem MSIE trotzdem hin kriege?

    Ja, man muss das Gedaechtnis des IE etwas auffrischen:

    ...

    Par.appendChild(INP);

    Hier diese Zeile anfuegen:

    Par.outerHTML=Par.outerHTML;

    MfG, Thomas

    1. [Nachtrag:]

      Par.outerHTML=Par.outerHTML;

      Um Fehler bei anderen Browsern zu vermeiden, besser so:

      if(Par.outerHTML)Par.outerHTML=Par.outerHTML;

      MfG, Thomas

      1. Hallo, Thomas

        Ich bin begeistert!
        Vielen Dank für die Lösung.

        MfG,  flo