Javascript选项元素在IE兼容性中选择

时间:2014-10-03 13:19:29

标签: javascript

我正在动态地在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兼容模式不能将其识别为选定的选项?

2 个答案:

答案 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 属性在某些浏览器中是只读的,无法设置,但有些允许。