Hallo.
Ich lasse mir hier gerade per JS ein Formular in den Dokumentenbaum einhängen, aber der IE hat ein Problem damit, die selected-Eigenschaft abhängig vom Rückgabewert des Trinitätsoperators zu setzen.
Hier einmal ein Beispielcode:
window.onload = function() {
var testArr = ['Foo', 'Bar', 'Baz', 'Qux'];
var testSel = 'Baz';
var myForm = document.createElement('form');
var mySelect = document.createElement('select');
for (var i = 0; i < testArr.length; i++) {
var myOption = new Option(testArr[i],
testArr[i].toLowerCase(),
(testArr[i] == testSel ? true : false));
mySelect.options[mySelect.options.length] = myOption;
}
myForm.appendChild(mySelect);
document.body.appendChild(myForm);
}
Die Ausgaben von testArr[i] und testSel sind wie erwartet beim Wert „Baz“ identisch und dennoch setzt der IE nicht die defaultSelected-Eigenschaft.
Füge ich den gleichen Operator für den vierten Parameter vom Option-Objekt ein, wird hier dann zwar die selected-Eigenschaft gesetzt, aber ein Element zu früh. In obigem Beispiel wird damit also „Bar“ an Stelle von „Baz“ vorselektiert. Das gleiche passiert auch, wenn ich explizit die selected-Eigenschaft folgendermaßen setze:
myOption.selected = (testArr[i] == testSel ? true : false);
Wo liegt mein (oder des IEs) Fehler?
Einen schönen Sonntag 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]