2014-10-03 80 views
0

我正在動態創建一個JavaScript選項控制:Javascript選項元素的選擇在IE兼容

我從ajax調用的返回對象填充選項。

我檢查我的結果對象的默認標誌,並設置DOM對象「選擇」的「選擇」屬性。

這工作正常,除了在Compatability模式下結果是不一樣的。

在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

爲什麼不只是'option.selected'? – tymeJV 2014-10-03 13:22:06

+0

我使用了option.setAttribute(「selected」,「selected」);它似乎在兼容性和非兼容性方面發揮作用。這是我應該這樣做的正確方法嗎?如果有效,它的工作原理是:P – Shroeder 2014-10-03 13:24:14

+0

是的 - 你也可以做'option.selected' - 兩者都可以。 – tymeJV 2014-10-03 13:25:04

回答

0

你應該設置option元素的selected屬性:

if (m_documents_Merge.DocumentsAttachments[i].Previews[x].Selected == "1") { 
    option.selected = true; 
} 
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品牌已選中該選項,但不會將其作爲默認選定選項,即重置表單不會設置該o選擇。

設置選擇屬性將選項設置爲默認選擇的選項,即如果表單被重置,該選項被選中,但不會使之成爲當前選定的選項。

如果您希望選擇選項併成爲默認選定選項,請同時設置屬性和屬性。

defaultSelected屬性在某些瀏覽器中是隻讀的,不能設置,雖然有些允許。

+0

謝謝你的更多信息,我的好先生。 – Shroeder 2014-10-03 13:39:20