Element.update()原型函数在IE中不起作用

时间:2014-03-11 09:24:07

标签: javascript internet-explorer prototypejs

我正在使用Element.innerHTML,但IE(8,9,10)不喜欢它,所以我切换到Element.insert(),但IE也不喜欢它。然后决定再次尝试使用Element.update() - nope!

搜索并发现.update()实际上是IE的.innerHTML的替代工作...尝试将变量或甚至直接字符串作为参数传递给函数 - “nuh uh” IE说。

脚本

var dropdownHTML = '<option>Some text</option>';
$('size_list').update('<form ><select id="dropdown_options"></select></form>');
for (var element in jsonResponse){
  dropdownHTML += '<option>'+ someString + '</option>';
  ...
}
$('dropdown_options').update(dropdownHTML);

来源

<div id="size_list" style="float:right;">
</div>

毋庸置疑,这一切都适用于FF和Chrome。我使用jQuery.html()制作了一个有效的解决方案,但我的整个文档都是使用prototype.js构建的,我不想混合使用这些内容。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这里最简单的答案可能是使用Option构造函数而不是设置select元素的HTML。

var form = document.createElement('form');
var select = document.createElement('select');
select.id = "dropdown_options";
select.options.add(new Option("Some text"));
for (/*...whatever your loop is...*/) {
    select.options.add(new Option("text of the option", "optional value of the option"));
}
form.appendChild(select);
$("size_list").appendChild(form);

请注意,您对选项集合使用add(而不是push)(它不是数组;某些实现具有push,但add更可靠)