IE: Generiertes select-Element ignoriert size-Attribut
Bastian Gretges
- javascript
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
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
» 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
Es muss natürlich heißen
document.getElementsByName("ort[]")[0].length = 0;
mea culpa