Andreas: (DOM) ON THE FLY erzeugter Button führt kein Javascript aus!

Hallo,

ich erzeuge per

var button1= document.createElement("button");
 var button1text=document.createTextNode("Bearbeiten");
 button1.setAttribute("type","button");
 button1.setAttribute("onClick","irgendeine_funktion(parameter);");
 button1.setAttribute("name","bearbeiten");
 button1.appendChild(button1text);

eine Button.

Dieser Button wird auch dargestellt aber leider wird die
Funktion 'irgendeine_function(parameter)' nicht ausgeführt.
Ist es denn überhaupt möglich?

Besten Dank!
Andreas

  1. Hi,

    button1.setAttribute("onClick","irgendeine_funktion(parameter);");
    Dieser Button wird auch dargestellt aber leider wird die
    Funktion 'irgendeine_function(parameter)' nicht ausgeführt.

    probier's mal in der evtl. für JavaScript nötigen case-sensitiven Schreibweise "onclick".

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. probier's mal in der evtl. für JavaScript nötigen case-sensitiven Schreibweise "onclick".

      Cheatah

      Habe ich auch schon probiert. Funktioniert auch nicht.

  2. Hallo,

    ich erzeuge per

    var button1= document.createElement("button");
     var button1text=document.createTextNode("Bearbeiten");
     button1.setAttribute("type","button");
     button1.setAttribute("onClick","irgendeine_funktion(parameter);");
     button1.setAttribute("name","bearbeiten");
     button1.appendChild(button1text);

    eine Button.

    Dieser Button wird auch dargestellt aber leider wird die
    Funktion 'irgendeine_function(parameter)' nicht ausgeführt.
    Ist es denn überhaupt möglich?

    1. Setze mal ein leeres Formular mit ID ins Dokument.
    2. Schreibe onclick komplett klein.
    3. Verwende zusaetzlich outerHTML, um dem IE die DOM-Manipulation beizubringen.

    Testbeispiel:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Tesdt by TM 03/03</title>
    <script language="JavaScript" type="text/javascript">
    <!--

    function Test1()
    {
     var button1=document.createElement("button");
     var button1text=document.createTextNode("Bearbeiten");
     button1.setAttribute("type","button");
     button1.setAttribute("onclick","irgendeine_funktion('Test');");
     button1.setAttribute("name","bearbeiten");
     button1.appendChild(button1text);
     document.getElementById("abc").appendChild(button1);
     if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;
    }

    function irgendeine_funktion(parameter)
    {
      alert(parameter);
    }

    //-->
    </script>
    </head>
    <body onload="Test1()">
    <form id="abc" action="">
    </form>
    </body>
    </html>

    MfG, Thomas

      1. Setze mal ein leeres Formular mit ID ins Dokument.
      2. Schreibe onclick komplett klein.
      3. Verwende zusaetzlich outerHTML, um dem IE die DOM-Manipulation beizubringen.

      Testbeispiel:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Tesdt by TM 03/03</title>
      <script language="JavaScript" type="text/javascript">
      <!--

      function Test1()
      {
       var button1=document.createElement("button");
       var button1text=document.createTextNode("Bearbeiten");
       button1.setAttribute("type","button");
       button1.setAttribute("onclick","irgendeine_funktion('Test');");
       button1.setAttribute("name","bearbeiten");
       button1.appendChild(button1text);
       document.getElementById("abc").appendChild(button1);
       if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;
      }

      function irgendeine_funktion(parameter)
      {
        alert(parameter);
      }

      //-->
      </script>
      </head>
      <body onload="Test1()">
      <form id="abc" action="">
      </form>
      </body>
      </html>

      MfG, Thomas

      Dein Beispiel funktioniert wunderbar. Danke. Hierbei ist folgende Zeile wichtig:
      if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;

      Ein Problem ist bei mir, daß ich immer Laufzeitfehler bekomme. Gut diesen kann ich mit setTimeout beheben. Leider funktioniert die Geschichte immer noch nicht in meinem Konstrukt, da ich auch eine Tabellenzeile mit neuen Zellen erzeuge und der Button innerhalb der Zelle dargestellt wird. Darstellung funktioniert fabelhaft. Der Aufruf aber immer noch nicht. Vielleicht hast du noch eine Idee wo ich die ...outerHTML anweisung plazieren sollte. Ansonsten probiere ich noch ein bißchen weiter.

      Nochmals besten Dank
      Andreas

      1. Hallo,

        Ein Problem ist bei mir, daß ich immer Laufzeitfehler bekomme. Gut diesen kann ich mit setTimeout beheben. Leider funktioniert die Geschichte immer noch nicht in meinem Konstrukt, da ich auch eine Tabellenzeile mit neuen Zellen erzeuge und der Button innerhalb der Zelle dargestellt wird. Darstellung funktioniert fabelhaft. Der Aufruf aber immer noch nicht. Vielleicht hast du noch eine Idee wo ich die ...outerHTML anweisung plazieren sollte.

        Versuche mal die gesamte Tabelle nach dem dynamischen Erzeugen von neuen Kindknoten und Inhalten zu "refreshen":

        document.getElementsByTagName("table")[index_ab_0].outerHTML=document.getElementsByTagName("table")[index_ab_0].outerHTML;

        oder dem "zustaendigen" table-Element eine eigene ID zuweisen und selbiges via document.getElementById() machen.

        Ansonsten mal etwas mehr Code online stellen.

        MfG, Thomas