2011-12-19 130 views
4

我有一個txt變量,其中包含我需要爲下拉列表設置的html字符串。該代碼在除IE以外的所有其他瀏覽器中工作正常。基本代碼如下所示。在IE中使用.innerHTML添加選項元素

while循環多用一些代碼

document.getElementById('theSelector').innerHTML = txt; 

其中'theSelector'是我選擇的元素爲我的形式

的ID,這樣基本上IE poops並不會產生我的名單。如果您想查看我的源代碼和所做的一切,我會在下面發佈我的網頁。如果你想看看網站應該如何運行,只需在另一個不是的ie瀏覽器中運行。

http://1wux.com/Resume/signUp.html

+0

我不認爲IE讓你'.innerHTML ='';'。你必須使用DOM方法。 – 2011-12-19 06:00:39

+0

如果我沒有記錯,這是IE瀏覽器的一個長期存在的bug。 http://support.microsoft.com/kb/276228這個錯誤報告是在2003年提交的。我遇到過一次,最簡單的解決方案是使用Adam的答案。 – qw3n 2011-12-19 06:11:20

回答

4

基於您的評論,它不產生你的列表,以及你要添加選項Jared的評論,嘗試這樣的事情:

var list = document.getElementById('theSelector'); 
var newOp = document.createElement("option"); 
newOp.text = "Txt"; 
newOp.value = "1"; 
list.options.add(newOp); 

編輯

Per Jared的評論,以下可能爲您提供了一點性能優勢:

list.options[list.options.length] = newOp; 
+1

演示:http://jsfiddle.net/ntERa/該方法總是讓我煩惱。 – 2011-12-19 06:07:10

+0

@JaredFarrish - 超越創造那個小提琴 - +1給你 - 你是一個遠離閃亮的徽章:)和哪種方法 - 像數組通常使用'add'而不是'push'? – 2011-12-19 06:08:52

+0

它也似乎在IE7-9中工作得很好。 – 2011-12-19 06:09:28

3

正如其他人所說,這是所有版本的IE中的一個錯誤。我會使用@ AdamRackis的解決方案,但是如果您必須使用字符串構建HTML,則唯一的解決方法似乎是outerHTML,並在字符串中包含您的<select>

演示:http://jsfiddle.net/ThinkingStiff/TWYUa/

HTML:

<select id="select"></select> 

腳本:

var options = '<select id="select"><option>one</option><option>two</option></select>'; 
document.getElementById('select').outerHTML = options; 
+0

謝謝你們!我會看看如果修復它。 – 2011-12-19 06:29:26

-1

使用jQuery

$('#theSelector').html(txt);

相關問題