Florian: Event geht nicht...

Hallo zusammen,

Ich habe ein kleines Problem.
Das folgende Skript ist fehlerfrei, aber das generierte <INPUT>-Tag führt die Funktion die unter onblur definiert ist nicht aus.

var TABLE = document.getElementById("tab").insertRow(document.getElementById("tab").getElementsByTagName("tr").length);

var TD = document.createElement("td");
TD.setAttribute("align","center");
var INPUT = document.createElement("input");
INPUT.setAttribute("type","text");
INPUT.setAttribute("name","kt"+nextid);
INPUT.setAttribute("id","kt"+nextid);
INPUT.setAttribute("size","3");
INPUT.setAttribute("maxlength","3");
INPUT.setAttribute("onblur","createElements("+nextid+")");
TD.appendChild(INPUT);
TR.appendChild(TD);

TABLE.appendChild(TR);

Kann mir da bitte jemand einen Tipp zukommen lassen.

MfG
Florian

  1. Hallo,

    INPUT.setAttribute("onblur","createElements("+nextid+")");

    Probiere es mit:

    INPUT.setAttribute("onblur","createElements("+nextid+")",true);

    oder

    INPUT.onblur="...";

    MfG, Thomas

    1. Hallo,

      INPUT.setAttribute("onblur","createElements("+nextid+")");

      Probiere es mit:

      INPUT.setAttribute("onblur","createElements("+nextid+")",true);

      oder

      INPUT.onblur="...";

      MfG, Thomas

      Ich habe beides ausprobiert und beide funktionieren nicht.

      1. Hallo,

        Ich habe beides ausprobiert und beide funktionieren nicht.

        Alternative:

        INPUT.onblur=function(){createElements(nextid);}

        MfG, Thomas

  2. Hi,

    INPUT.setAttribute("onblur","createElements("+nextid+")");

    was steht in nextid, und ist der erzeugte Attributwert aus JavaScript-Sicht gültig?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      INPUT.setAttribute("onblur","createElements("+nextid+")");

      was steht in nextid, und ist der erzeugte Attributwert aus JavaScript-Sicht gültig?

      Cheatah

      In nextid steht einfach nur die nächste Zeilennummer.

      JavaScript kann das Element ansprechen und gibt mir keinen Fehler aus. Auch die Eigenschaft onblur wurde richtig gesetzt wenn ich sie mit alert() auslese.

  3. Hallo zusammen,

    Ich habe ein kleines Problem.
    Das folgende Skript ist fehlerfrei, aber das generierte <INPUT>-Tag führt die Funktion die unter onblur definiert ist nicht aus.

    Weiter unten behauptest du, das ein alert() ausgeführt wird. Dann kan es eigentlich nur daran liegen, dass die Funktion  createElements() nicht funktioniert, oder?
    Ansonsten ist deine Fehlerbeschreibung dürftig. Du meinst also es gibt keine Fehlermeldung der onblur event wird nicht geworfen, aber die Funktion wird nicht ausgeführt?
    Irgendwo in dieser Kette muss ein Fehler deinerseits sein. Wo läßt sich aber nicht beurteilen, da du uns ja nur funktionnierenden Code zeigst.

    Struppi.

  4. Ich habe nun eine Lösung für mein Problem gefunden.

    Ein Event läßt sich nicht einfach mit [object].setAttribute() generieren.

    Dafür muss man schon z.B. [object].attachEvent("onblur",alert)
    Wichtig ist dabei allerdings, dass eine Funktion zwar auf diese Weise aufgerufen wird, aber man ihr keine Parameter mitschicken kann.

    Also heißt die Zeile bei mir nun:

    INPUT.attachEvent("onblur",next);

    <script>
     function next() {
      nextid = nextid + 1; // Globale Variable
      createElements();
    }
    </script>

    Ich danke trotzdem allen für die schnelle Hilfe.

    MfG
    Florian

    P.S. @cheatah Tut mir leid, dass meine Codeschnippsel unvollständig waren. Das nächste mal mache ich es anders.

    1. Hallo,

      Ich habe nun eine Lösung für mein Problem gefunden.

      Ein Event läßt sich nicht einfach mit [object].setAttribute() generieren.

      Es geht nicht um ein Event, sondern einen Event-Handler.

      Dafür muss man schon z.B. [object].attachEvent("onblur",alert)
      Wichtig ist dabei allerdings, dass eine Funktion zwar auf diese Weise aufgerufen wird, aber man ihr keine Parameter mitschicken kann.

      Man kann das durchaus auch mit setAttribute() realisieren, auch mit Parameteruebergabe:

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

      function Hallo(text)
      {
        alert(text);
      }

      function Test()
      {
        document.getElementById("abc").setAttribute("onclick",function(){Hallo('ok')},true);
      }

      //-->
      </script>
      </head>
      <body onload="Test()">
      <form action="">
      <input id="abc" type="button" value="Klick mich!">
      </form>
      </body>
      </html>

      MfG, Thomas

    2. Hi,

      P.S. @cheatah Tut mir leid, dass meine Codeschnippsel unvollständig waren. Das nächste mal mache ich es anders.

      das begrüße ich zwar, aber wieso es Dir leid tut, ist mir nicht ganz klar ...? Ich hatte eine Vermutung, woran es liegen könnte, und brauchte dazu einfach nur 'ne zusätzliche Information. Danach hatte sich meine Vermutung auch schon erledigt :-)

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes