2011-12-19 55 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);

相关问题