我正在动态地在javascript中创建一个选项控件:
我从ajax调用的返回对象填充选项。
我检查结果对象是否有默认标志,并设置dom对象“select”的“selected”属性。
这种方法很好,除了在兼容模式下,结果不一样。
在IE兼容模式(IE 7)中,该选项具有索引的第一个选择值。
select = document.createElement("select");
select.id = "tr_theGrid" + i + "_DropDown";
select.className = "theField"
select.style.width = "100%";
for (var x = 0; x < docpreviews.length; x++) {
option = document.createElement("option");
option.value = docpreviews[x].PrevId;
option.innerHTML = docpreviews[x].PrevName;
if (m_documents_Merge.DocumentsAttachments[i].Previews[x].Selected == "1") {
option.defaultSelected = true;
}
select.appendChild(option);
}
这在IE之外工作正常,为什么IE兼容模式不能将其识别为选定的选项?
答案 0 :(得分:0)
您应该设置selected
元素的option
属性:
if (m_documents_Merge.DocumentsAttachments[i].Previews[x].Selected == "1") {
option.selected = true;
}
答案 1 :(得分:0)
您可以使用Option constructor创建选项:
for (var x = 0; x < docpreviews.length; x++) {
// new Option([text[, value[, defaultSelected[, selected]]]])
option = new Option(docpreviews[x].PrevName, docpreviews[x].PrevId);
if (m_documents_Merge.DocumentsAttachments[i].Previews[x].Selected == "1") {
// To make the option selected, but does not make it the default selected option
option.selected = true;
// To make the option the default selected, but does not make it selected
option.setAttribute('selected', true);
}
select.appendChild(option);
}
将选中的 属性设置为true会使选项处于选中状态但不会使其成为默认选定选项,即重置表单不会将该选项设置为选中状态。
设置选中 属性将选项设置为默认选择选项,即如果表单已重置,则选择该选项,但不会使其成为当前选项选择的选项。
如果您希望选择该选项并成为默认选择选项,请同时设置属性和属性。
defaultSelected 属性在某些浏览器中是只读的,无法设置,但有些允许。