springle: onclick via javascript

Moin Mädels und Jungs.

Ich falle mal schnell mit der Tür ins Haus...

... und erstelle dynamisch ein paar Objekte (vereinfacht dargestellt):

for (i = 0; i < 5; i++) {
  var newEntry = document.createElement("div");
    newEntry.className = "req-result";
    newEntry.id = "result-"+i;
    newEntry.onclick = function () {
      alert("Test");
    }
  }
}

das Oncklick Ereignis bereitet mir da Sorgen.
In Mozilla klappts einwandfrei, aber der Internetexplorer spielt da nicht mit (weder 6 noch 7).

Hab ich da irgendwo Denkstau oder kann man DIVs einfach kein onclick Ereignis zuweisen?

Gruß springle

  1. Mahlzeit allerseits,

    ich bin zwar eigentlich niemand, der seine Fragen selbst beantwortet, allerdings kam mir beim Rumprobieren plötzlich die Idee:

    newEntry zunächst an das gewünschte Element anfügen und nachträglich erst (via getElementById) das onclick-Ereignis setzen.

    Warum es DANN geht, vorher aber nicht ist mir zwar unerklärlich, aber die Hauptsache ist ja, dass es geht.

    Vielen Dank an diejenigen, die sich dem Problem eventuell schon angenommen haben.

    Gruß springle

    1. Hey ihr beiden!

      Ich glaube, es empfiehlt sich die Eigenschaften mit der Funktion setAttribute() zu setzen!

      Beste Grüße
        ~ Thilo

      1. Ich glaube, es empfiehlt sich die Eigenschaften mit der Funktion setAttribute() zu setzen!

        Nein, das ist keine gute Idee

        Struppi.

      2. Hi Thilo,

        Ich glaube, es empfiehlt sich die Eigenschaften mit der Funktion setAttribute() zu setzen!

        Leider kann ich dir die Quelle jetzt nicht mehr nennen, allerdings habe ich irgendwo gelesen, dass man es vermeiden sollte, setAttribute zu verwenden, wenn es möglich ist das Attribut per object.attribut zu setzen.

    2. Hallo,

      newEntry zunächst an das gewünschte Element anfügen und nachträglich erst (via getElementById) das onclick-Ereignis setzen.

      Warum es DANN geht, vorher aber nicht ist mir zwar unerklärlich, aber die Hauptsache ist ja, dass es geht.

      innerhalb deiner for-Schleife gab's  kein appendChild() und newEntry wurde immer ein neues Element zugewiesen. Wäre nicht schlecht, wenn dein "i" auch noch als lokale Variable definiert wäre.

      Gruß plan_B

      --
           *®*´¯`·.¸¸.·
      1. Hallo, plan_B,

        innerhalb deiner for-Schleife gab's  kein appendChild() und newEntry wurde immer ein neues Element zugewiesen. Wäre nicht schlecht, wenn dein "i" auch noch als lokale Variable definiert wäre.

        Ups, in meinem Originalcode stehen zwischendrin noch einige Anweisungen, die den Code etwas unlesbar machen. Im Sinne der Übersichtlichkeit habe ich diesen dann gekürzt und wohl versehentlich appendChild() mitgelöscht. Aber das ist denke ich mal ohnehin klar. ;-)

        Die For-Schleife war pro forma nur zur Veranschaulichung drumherum gebastelt.

  2. das Oncklick Ereignis bereitet mir da Sorgen.
    In Mozilla klappts einwandfrei, aber der Internetexplorer spielt da nicht mit (weder 6 noch 7).

    Das ist falsch, genauso wie du es oben zeigst funktioniert es in den von dir genannten Browsern.

    Struppi.

    1. Hallo Struppi,

      das Oncklick Ereignis bereitet mir da Sorgen.
      In Mozilla klappts einwandfrei, aber der Internetexplorer spielt da nicht mit (weder 6 noch 7).

      Das ist falsch, genauso wie du es oben zeigst funktioniert es in den von dir genannten Browsern.

      Das dachte ich ansich auch, allerdings haben mir die IEs da was anderes erzählt. Deswegen gehe ich einfach mal davon aus, dass ich im restlichen Code irgendwas verbockt hab. Meistens ist es ja doch menschliches Versagen :-)

      1. Das ist falsch, genauso wie du es oben zeigst funktioniert es in den von dir genannten Browsern.

        Das dachte ich ansich auch, allerdings haben mir die IEs da was anderes erzählt.

        http://javascript.jstruebig.de/test/onclick via javascript.html

        Deswegen gehe ich einfach mal davon aus, dass ich im restlichen Code irgendwas verbockt hab.

        so sieht's aus.

        Struppi.