ernst Groß: javascript DOM und IE

Hi,
ich habe ein Script geschrieben, daß mir in den DOM ein img-Objekt einfügt. Dieses Bild soll onMouseOver/out sensible sein:

mein Code:
//  die Variablen sind natürlich alle konkret!
//  Variable picID,myID Funktionen:  aktive() inaktive()

newElement = document.createElement("img");
 newElement.setAttribute("id",picID,0);
 newElement.setAttribute("src","img.gif",0);
 newElement.setAttribute("onMouseOver","aktive(this.id)",0);
 newElement.setAttribute("onMouseOut","inAktive(this.id)",0);

// einpflegen in den DOM läuft auch!
document.getElementById(myID).appendChild(newElement);

auf dem FireFox läuft es auch soweit sehr gut, nur der IE kriegt das Ereignis onMouseOver und onMouseOut nicht verarbeitet. Selbst Tests mit Anführungszeichen'' und alert("hallo") blieben erfolglos! Der DOM wird im IE offensichtlich auch richtig erzeugt, auch wenn Anführungszeichen eher selten sind.

Meine Frage: wie "überredet" man den Explorer dazu mausOver-Ereignisse die Später in den DOM erscheinen zu verarbeiten?

Vielen Dank für Eure Hilfe
 Ernst

egross@gmx.net

  1. Hi,

    newElement.setAttribute("onMouseOver","aktive(this.id)",0);

    newElement.onmouseover =  new Function ("aktive(this.id)");

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Hallo Joachim.

      newElement.setAttribute("onMouseOver","aktive(this.id)",0);
      newElement.onmouseover =  new Function ("aktive(this.id)");

      Hier explizit ein Funktionsobjekt zu erzeugen ist nicht nötig:

      newElement.onmouseover = function() {  
        aktive(this.id);  
      }
      

      Einen schönen Dienstag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. newElement.onmouseover = function() {

        aktive(this.id);
        }

          
        wobei sich this.id sich höchst überflüssig anhört:  
          
        ~~~javascript
        newElement.onmouseover = aktive;  
          
        function aktive()  
        {  
          ....// Hier ist this = newElement  
        }  
        
        

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  2. ich habe ein Script geschrieben, daß mir in den DOM ein img-Objekt einfügt. Dieses Bild soll onMouseOver/out sensible sein:

    Naja, das geht auch mit CSS.

    mein Code:
    //  die Variablen sind natürlich alle konkret!
    //  Variable picID,myID Funktionen:  aktive() inaktive()

    newElement = document.createElement("img");
    newElement.setAttribute("id",picID,0);
    newElement.setAttribute("src","img.gif",0);
    newElement.setAttribute("onMouseOver","aktive(this.id)",0);
    newElement.setAttribute("onMouseOut","inAktive(this.id)",0);

    setAttribute ist nicht notwendig und bringt den IE auch ab und an aus dem Konzept. einfach [object].eigenschaft = ..... genügt vollkommen.

    var newElement = document.createElement("img");
    newElement.src = "img.gif";
    newElement.onmouseover = aktive;
    newElement.onmouseout = inAktive;

    Die ID ist nicht notwendig, da du in den Funktionen aktive und inAktive über this auf das Element zugreifen kannst.

    Struppi.

    --
    Javascript ist toll (Perl auch!)