basti_p: select appendChild - Problem mit IE

Hallo,

ich habe 2 select-Elemente, aus dem linken werden ausgewählte options mittels cloneNode und appendChild in das rechte übernommen. So weit, so gut.
Im IE (Version 7) wird in dem rechten select aber nichts angezeigt:-( ich kann  nach dem Einfügen die korrekte Anzahl der childNodes ausgeben, auch den text und value - aber man sieht nichts. Fehlermeldungen kommen keine, im FF funktioniert es. Kennt jemand dieses Problem?

Danke und Grüße Basti

  1. Hi,

    ich mach was aehnliches, ich clone zwar nicht aber ich fuege auch dynamisch Optionen ein, funktioniert hier eigentlich ganz gut, cross-browser.

    Kannst uns deinen Code mal zeigen?

    Ansonsten wuerd ich mir mal IE script debugger und/oder die IE Developer Toolbar installieren ... nicht weil beide Tools gut waeren, aber was besseres gibts fuer den IE leider nicht (Google hilft beim Finden).

    Viel Erfolg!

    1. Hallo,

      hier die Funktion; nischt aufregendes:

      function addOption(source,target){
       var src_element=document.getElementById(source);
       for(var i=0;i<src_element.childNodes.length;i++){
        var option_element=src_element.childNodes[i];
        if(option_element.nodeName=="OPTION" && option_element.selected==true){
         var new_option=option_element.cloneNode(true);
         document.getElementById(target).appendChild(new_option);
        }
       }
      }

      Ich habe dem Ziel-Select testweise mal ein onclick="alert(this.childNodes.length)" verpasst - gibt die korrekte Anzahl aus...

      Grüße Basti

      1. Hallo,

        var option_element=src_element.childNodes[i];
          if(option_element.nodeName=="OPTION" && option_element.selected==true){

          
         if(option_element.nodeName.toUpperCase()=="OPTION" && option_element.selected){  
        ...  
        
        

        vielleicht ist es nur diese Kleinigkeit. Ansonsten kennt <http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#select@title=javascript/objekte/htmlelemente.htm#select@title=select Element> die Methode add()

        Gruß plan_B

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

          [code lang=javascript]
          if(option_element.nodeName.toUpperCase()=="OPTION" && option_element.selected){

          die nodeName's sind imho immer großgeschrieben; weiter oben in diesem Thread habe ich die Lösung gepostet - trotzdem danke!

          Grüße Basti

  2. Hallo,

    das Problem liegt an einer anderen Funktion: um den tBody einer Tabelle scrollbar zu machen (was im IE mit overflow ja leider nicht unterstützt wird),
    dupliziere ich diese, lösche den thead in dieser und den tbody in der Ursprungstabelle füge sie in einen div mit overflow=auto ein.
    Funktioniert - aber dann tritt im IE leider der genannte Fehler auf.

    Grüße Basti

    1. Hallo,

      ich habe die addOption-Funktion erweitert: nach dem appendChild blende ich das select-Element via style.display="none" aus und wieder ein (style.display="") - et voilá - die options werden angezeigt:-)

      Grüße Basti

  3. ich habe 2 select-Elemente, aus dem linken werden ausgewählte options mittels cloneNode und appendChild in das rechte übernommen. So weit, so gut.

    Wieso verwendest du nicht einfach new Option();?
    Funktioniert in allen Browsern.

    Struppi.