Javascript 对于select DOM对象,add()和appendChild()是否相同?
我正在开发一个小型web应用程序,它可以更改select下拉列表的内容 我想知道appendChild()和add()是否都在JavaScript中的select DOM对象上完成相同的任务?Javascript 对于select DOM对象,add()和appendChild()是否相同?,javascript,dom,select,object,Javascript,Dom,Select,Object,我正在开发一个小型web应用程序,它可以更改select下拉列表的内容 我想知道appendChild()和add()是否都在JavaScript中的select DOM对象上完成相同的任务? var someSelect = document.getElementById('select-list'); var newOption = document.createElement('option'); someSelect.appendChild(newOption); // The abo
var someSelect = document.getElementById('select-list');
var newOption = document.createElement('option');
someSelect.appendChild(newOption);
// The above is the same as the following?
someSelect.add(newOption);
在这种情况下,我相信他们会完成同样的任务
add()
是通过专门为select
元素添加选项而提供的,并且有一些额外的选项(例如用于添加新选项的可选索引
等)
appendChild()
将直接附加子节点
注意两种方法在跨浏览器时的不同实现:我认为这将是您最大的痛点。IIRC,IEs在将子项附加到
select
s时会导致问题,因此如果该方法存在,您可能希望add
,如果您希望在
中操作选项时确保跨浏览器兼容性,请使用appendChild
,最可靠的方法是使用它的options
属性并用Option
对象填充它。自20世纪90年代末以来,以下久经考验的方法适用于所有可编写脚本的浏览器:
var options = select.options;
options[options.length] = new Option("Option text", "option_value");
我认为这应该是等效的,但在这里,您可以找到一个问题,该问题在您尝试使用选项组时对不同的实现进行了说明:
当select元素中已经有组时,IE无法在“根目录”中添加新选项。看起来这是最好的选项。谢谢
options[options.length]
最好写成options.push()
@Kulvar:No.options
不是数组,也没有push()
方法。