function assertSelected(aOption, aExpectDefaultSelected, aExpectSelected) {
++testNumber;
is(aOption.defaultSelected, aExpectDefaultSelected, "Asserting default-selected state for option " + testNumber);
is(aOption.selected, aExpectSelected, "Asserting selected state for option " + testNumber);
}
function assertSame(aSel1, aSel2Str, aTestNumber) { vardiv = document.createElement("div"); div.innerHTML = aSel2Str;
sel2 = div.firstChild;
is(aSel1.options.length, sel2.options.length, "Length should be same in select test " + aTestNumber);
is(aSel1.selectedIndex, sel2.selectedIndex, "Selected index should be same in select test " + aTestNumber);
for (var i = 0; i < aSel1.options.length; ++i) {
is(aSel1.options[i].selected, sel2.options[i].selected, "Options[" + i + "].selected should be the same in select test " +
aTestNumber);
is(aSel1.options[i].defaultSelected, sel2.options[i].defaultSelected, "Options[" + i + "].defaultSelected should be the same in select test " +
aTestNumber);
}
}
// Creation methods var opt = document.createElement("option");
assertSelected(opt, false, false);
opt = new Option();
assertSelected(opt, false, false);
// Setting of defaultSelected
opt = new Option();
opt.setAttribute("selected", "selected");
assertSelected(opt, true, true);
opt = new Option();
opt.defaultSelected = true;
assertSelected(opt, true, true);
is(opt.hasAttribute("selected"), true, "Attribute should be set");
is(opt.getAttribute("selected"), "", "Attribute should be set to empty string");
// Setting of selected
opt = new Option();
opt.selected = false;
assertSelected(opt, false, false);
opt = new Option();
opt.selected = true;
assertSelected(opt, false, true);
// Interaction of selected and defaultSelected
opt = new Option();
opt.selected;
opt.setAttribute("selected", "selected");
assertSelected(opt, true, true);
// First test of putting things in a <select>: Adding default-selected option
// should select it. var sel = document.createElement("select");
sel.appendChild(new Option());
is(sel.selectedIndex, 0, "First option should be selected");
assertSelected(sel.firstChild, false, true);
sel.appendChild(new Option());
is(sel.selectedIndex, 0, "First option should still be selected");
assertSelected(sel.firstChild, false, true);
assertSelected(sel.firstChild.nextSibling, false, false);
// Second test of putting things in a <select>: Adding two default-selected
// options should select the second one.
sel = document.createElement("select");
sel.appendChild(new Option());
sel.appendChild(new Option());
opt = new Option();
opt.defaultSelected = true;
sel.appendChild(opt);
opt = new Option();
opt.defaultSelected = true;
sel.appendChild(opt);
assertSelected(sel.options[0], false, false);
assertSelected(sel.options[1], false, false);
assertSelected(sel.options[2], true, false);
assertSelected(sel.options[3], true, true);
is(sel.selectedIndex, 3, "Unexpected selectedIndex in select test 2");
assertSame(sel, "", 2);
// Third test of putting things in a <select>: adding a selected option earlier
// than another selected option should make the new option selected.
sel = document.createElement("select");
sel.appendChild(new Option());
sel.appendChild(new Option());
opt = new Option();
opt.defaultSelected = true;
sel.appendChild(opt);
opt = new Option();
opt.defaultSelected = true;
sel.options[0] = opt;
assertSelected(sel.options[0], true, true);
assertSelected(sel.options[1], false, false);
assertSelected(sel.options[2], true, false);
is(sel.selectedIndex, 0, "Unexpected selectedIndex in select test 3");
// Fourth test of putting things in a <select>: Just like second test, but with
// a <select multiple>
sel = document.createElement("select");
sel.multiple = true;
sel.appendChild(new Option());
sel.appendChild(new Option());
opt = new Option();
opt.defaultSelected = true;
sel.appendChild(opt);
opt = new Option();
opt.defaultSelected = true;
sel.appendChild(opt);
assertSelected(sel.options[0], false, false);
assertSelected(sel.options[1], false, false);
assertSelected(sel.options[2], true, true);
assertSelected(sel.options[3], true, true);
is(sel.selectedIndex, 2, "Unexpected selectedIndex in select test 4");
assertSame(sel, " + ",
4);
</script>
</pre>
</body>
</html>
Messung V0.5
¤ Dauer der Verarbeitung: 0.27 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.