3

在 dojo 中创建选择选项时

dojo.byId("it1").add(dojo.create("option", { value:'1',innerHTML:'Iteration 1' }));

我在 IE8 中遇到了 Invalid argument 错误,其余浏览器工作正常。

4

1 回答 1

1

这是因为浏览器已经实现了某种故障转移机制。或者甚至标准已经改变,不确定是什么。事实仍然是,在旧浏览器中,该option元素有一个奇怪的实现。考虑以下以编程方式创建新optionDOM:

text='Iteration 1';
value=1;
defaultSelected = false;
selected=false;

document.getElementById('myselect').options.add(
  new Option(text, value, defaultSelected ,selected)
);

请参阅http://msdn.microsoft.com/en-us/library/ie/dd757810(v=vs.85).aspx

API 也有参数,指示是否选择了选项。但这里有趣的部分是参数text

它大致翻译为

var opt = document.createElement('OPTION');
opt.text = text;
opt.value = value;

您会发现,以编程方式创建的选择(使用innerHTML方法)在 IE8 之前(包括 IE8)中将无法正常工作。该元素根本没有连接到其父表单,因此不会在提交时发送到服务器。

于 2014-02-15T12:03:10.490 回答