dev_team: IE 6 und setAttributeNode

Hallo,

Auch nach Recherche bin ich noch nicht schlauer geworden weswegen der IE 6 setAttributeNode nicht so fressen will wie ich ihm das vorwerfe (laut Doku soll das ab 6.0 möglich sein). Firefox geht übrigens problemlos.

Stark vereinfacht...
   var input = document.createElement("input");

var type = document.createAttribute("type");
   type.nodeValue = "checkbox";
   input.setAttributeNode(type);

var onclick = document.createAttribute("onclick");
   onclick.nodeValue = "alert('test')";
   input.setAttributeNode(onclick);

//input wird später an entsprechnder Stelle im HTML eingefügt

Statt des alerts kommt eigentlich ein rechtmäßiger Funktionsaufruf, doch nicht einmal das alert lässt sich erzeugen.
Laut IE Dev Toolbar hat das Input-Feld das Attribut onclick mit dem alert, doch es tut sich nichts (beim IE 6) beim Klick darauf.

Kann hier jemand weiterhelfen?
Danke!

  1. Auch nach Recherche bin ich noch nicht schlauer geworden weswegen der IE 6 setAttributeNode nicht so fressen will wie ich ihm das vorwerfe (laut Doku soll das ab 6.0 möglich sein). Firefox geht übrigens problemlos.

    Was soll er denn machen rülpsen? Oder vielleicht zeigt er ja einen Fehler an, du weißt wo du die Fehlermeldugnen im IE findest?

    Stark vereinfacht...
       var input = document.createElement("input");

    var type = document.createAttribute("type");
       type.nodeValue = "checkbox";
       input.setAttributeNode(type);

    var onclick = document.createAttribute("onclick");
       onclick.nodeValue = "alert('test')";
       input.setAttributeNode(onclick);

    //input wird später an entsprechnder Stelle im HTML eingefügt

    das ist stark kompliziert. Einfach wäre es so:

    var input = document.createElement("input");  
      
    input.type = 'checkbox';  
    input.onclick = function() { alert('test'); };  
    
    

    Struppi.

  2. @@dev_team:

    nuqneH

    Stark vereinfacht...
       var input = document.createElement("input");

    var type = document.createAttribute("type");
       type.nodeValue = "checkbox";
       input.setAttributeNode(type);

    var onclick = document.createAttribute("onclick");
       onclick.nodeValue = "alert('test')";
       input.setAttributeNode(onclick);

    Alter Hut. Erzeuge nicht Attributknoten, sondern notiere dies als Objekteigenschaften:

    var input = document.createElement("input");  
    input.type = "checkbox";  
    input.onclick = function () { alert('test'); };
    

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  3. Danke euch beiden, so klappt es!
    Seltsam nur dass er setAttributeNode nicht will.

    1. Danke euch beiden, so klappt es!
      Seltsam nur dass er setAttributeNode nicht will.

      Wie gesagt, suche die Fehlermeldung, dann weißt du mehr

      Struppi.

  4. Nur als Tipp:

    Auch nach Recherche bin ich noch nicht schlauer geworden weswegen der IE 6 setAttributeNode nicht so fressen will wie ich ihm das vorwerfe (laut Doku soll das ab 6.0 möglich sein). Firefox geht übrigens problemlos.

    Mit einer Javascript-Bibliothek (zB JQuerys attr()-Funktion) vermeidest du solche nervigen Stolpersteine, weil die Browser-Eigenarten von der Bibliothek gekapselt werden. Du musst zwar 20k bzw. 57k zusätzlich laden, aber erstens dank Browser-Caches nur einmalig und vor allem kannst du dich zweitens voll und ganz auf dein Projekt konzentrieren.