Bastian Gretges: IE: Generiertes select-Element ignoriert size-Attribut

Hallo zusammen,

per JS-Funktion baue ich mir Stück für Stück ein neues select-Element auf, das ich dann für ein altes einsetze:

var select = document.forms["select"].elements["ort[]"];
  var neu = document.createElement("select");
  var name = document.createAttribute("name");
  var onchange = document.createAttribute("onchange");
  var size = document.createAttribute("size");
  var multiple = document.createAttribute("multiple");
  name.nodeValue = "ort[]";
  onchange.nodeValue = "setRegion();";
  size.nodeValue = "5";
  multiple.nodeValue = "multiple";
  neu.setAttributeNode(name);
  neu.setAttributeNode(onchange);
  neu.setAttributeNode(size);
  neu.setAttributeNode(multiple);
  document.getElementById("ort").replaceChild(neu,select);
  // die option-Elemente generiere ich weiter unten,
  // die werden aber auch fehlerfrei dargestellt

...

<div id="ort">
    <select size="5" multiple="multiple" name="ort[]" onchange="setRegion();">
      <option>...</option>
      ...
    </select>
  </div>

Im Firefox klappts wunderbar, im IE bekomme ich nach Auslösen der Funktion ein Drop-Down-Feld trotz des size-Attributs (Wert="5"). Was mich ein bisschen verrückt macht, ist die Tatsache, dass es so (oder ähnlich) schon funktioniert hat. Ist der Code so richtig und ich sollte an anderen Stellen suchen, oder seht Ihr Fehler.

Danke für jegliche Hilfe im Voraus.

Gruß,
Basti

  1. hi,

    Im Firefox klappts wunderbar, im IE bekomme ich nach Auslösen der Funktion ein Drop-Down-Feld trotz des size-Attributs (Wert="5"). Was mich ein bisschen verrückt macht, ist die Tatsache, dass es so (oder ähnlich) schon funktioniert hat. Ist der Code so richtig und ich sollte an anderen Stellen suchen, oder seht Ihr Fehler.

    Auf createAttribute/setAttributeNode zu verzichten, weil der IE da oftmals Zicken macht, wurde hier schon des öfteren empfohlen.
    element.eigenschaft = wert;
    tut's in aller Regel auch, oft sogar besser.

    Es spricht zumindest laut den Informationen in der MSDN auch im IE nichts gegen dynamisches setzen von size.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. » Auf createAttribute/setAttributeNode zu verzichten, weil der IE da oftmals Zicken macht, wurde hier schon des öfteren empfohlen.
      » element.eigenschaft = wert;
      » tut's in aller Regel auch, oft sogar besser.
      »
      » Es spricht zumindest laut den Informationen in der MSDN auch im IE nichts gegen dynamisches setzen von size.
      »
      » gruß,
      » wahsaga
      »
      »
      Danke für die schnelle Antwort. Habs mal ganz anders probiert und das alte select stehen gelassen und einfach mit
      document.getElementByName("ort[]")[0].length = 0;
      geleert. Fülle dann die neuen option-Elemente rein und es klappt ganz prima!

      Nochmal danke und nen schönen Tag noch!

      Gruß,
      Basti

    2. Es muss natürlich heißen

      document.getElementsByName("ort[]")[0].length = 0;

      mea culpa