2010-05-14 99 views
1

工作,我有以下簡單的腳本的document.getElementById()。innerHTML的用於選擇標籤不能在IE


<input type="button" onclick="document.getElementById('a').innerHTML = '<option>something</option>';"/>  
<select id="a" style="width: 150px;"> 
</select> 

,但它不能在IE瀏覽器。 你能告訴我爲什麼嗎? 感謝

+0

相關,跨瀏覽器的方式以前的問題補充一個選項:http://stackoverflow.com/questions/292101/browser-neutral-way-to-add-options-to-a-select-element-in -javascript/292122#292122 – 2010-05-15 00:56:39

+0

見http://stackoverflow.com/questions/1848588/why-does-html-work-and-not-innerhtml-or-appendchild/1849100#1849100 – 2010-05-15 01:00:30

回答

2

你會好起來的具有AJAX腳本返回一個包含您想要的選項的JSON對象,然後使用DOM方法來創建選項節點匹配。

如果你真的必須這樣做以HTML字符串,這樣做的方式是寫裏面的選項全新<select>元素。然後,您可以將<option>節點中的信息複製到您最初定位的選擇中。

var select= document.getElementById('a'); 
select.options.length= 0; 

var div= document.createElement('div'); 
div.innerHTML= '<select>'+options+'</select>'; 
var options= div.firstChild.options; 
for (var i= 0; i<options.length; i++) { 
    var o= options[i]; 
    select.options[i]= new Option(o.text, o.value, o.selected); 
} 
+0

感謝的人,我就是在想整天。 我不知道JSON可言,也許你可以給一個鏈接,在那裏我可以讀到他們? – Simon 2010-05-15 11:01:55

0

IE往往不喜歡你這樣的項目做事情的方式。同樣可以設置表格的innerHTML

您應該學會使用DOM方式......例如,使用createElement ("OPTION"),然後使用appendChild()(如果需要,先刪除removeChild()的子項)。總的來說,它比innerHTML好。

0

使用此代碼:

var optionElement = document.createElement("option"); 
optionElement.innerHTML = "some text here"; 

document.getElementById('a').appendChild(optionElement); 
+0

是的,它的工作原理,但我用阿賈克斯,並在php文件我生成準備選項列表,在這種情況下,我不能使用的appendChild方法:( – Simon 2010-05-14 23:28:30

1

或者乾脆使用jQuery和html()代替innerHTML ...

所以......

$("#a").html("<option>Whatever</option>"); 

在所有對象所有的瀏覽器的偉大工程!

相關問題