2011-08-11 55 views
2

我正在尋找在Internet Explorers(6和7)中的HTML網站上訪問SELECT值的簡單和簡短的解決方案。在Internet Explorer 6中訪問SELECT的值

HTML

<select id="s1"> 
    <option>Option1</option> 
</select> 

JS:

document.getElementById("s1").options[document.getElementById("s1").selectedIndex].value 

上面的代碼不工作。我得到空的字符串。

我發現one solution - 我會盡一切的選擇是這樣的:

<option value="Option1">Option1</option> 

這工作,但我的網站大多是形式cosist,所以這樣的操作由50-70%提高其規模。

你知道其他方法嗎?

PS。我讀過,我應該使用「文本」,而不是「價值」,但我不確定。我找不到這樣做的後果。

回答

2

使用,

document.getElementById("s1").options[document.getElementById("s1").selectedIndex].innerHTML; 
+0

比使用「.text」更好嗎?什麼是差異? – Lis

+0

它應該沒有太大的區別,除非選項標籤的內容包含HTML,在這種情況下,innerHTML將拾取整個內容(HTML和全部)。 –

+0

+1。你是對的'.innerHTML'是IE6中唯一的工作。我刪除了我的答案。 –

2

這是因爲你沒有在你的選項value屬性:

<select id="s1"> 
    <option value="Option1">Option1</option> 
</select> 

這會給你正確的值返回。

較新的瀏覽器發送option text而不是丟失的值屬性。

至於你使用什麼的問題,正確的語義方法是使用value屬性。如果您的顯示文字與價值不同,該怎麼辦?你會再改變你的設計嗎?

如果頁面大小是一個問題,請嘗試刪除whitespacegzipping content而不是打破語義。請注意,一些較舊的IE6版本(IE6與SP3很好,我猜)可能無法與GZipped內容打好。