我正在开发一个小型Web应用程序,用于更改选择下拉列表的内容。
我想知道appendChild()和add()是否在JavaScript中的select DOM对象上完成相同的任务?
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);
答案 0 :(得分:5)
如果您想在<select>
中操作选项时确保跨浏览器兼容性,最可靠的方法是使用其options
属性并使用Option
对象填充它。自20世纪90年代末以来,以下历史悠久的方法适用于所有可编写脚本的浏览器:
var options = select.options;
options[options.length] = new Option("Option text", "option_value");
答案 1 :(得分:3)
在这种情况下,我相信他们会完成同样的任务。
add( )
是专门通过HTMLSelectElement
interface专门为select
元素添加选项而提供的,并且有一些额外选项(例如添加新{{}的可选索引1}}等。)。
option
将为您提供子节点的直接附加。
注意跨浏览器的两种方法的不同实现:我认为这将是你最大的痛点。 IIRC,在将儿童追加到appendChild( )
时,IE会导致问题,因此如果该方法存在并且回到select
,您可能希望add
。
答案 2 :(得分:1)
我认为它应该是等价的,但是在这里你可以找到一个问题,当你尝试使用选项组时,它会说明不同的实现:
SELECT box: On IE item is added to OptGroup instead of root. FF ok
当select元素中已存在组时,IE无法在“根目录”中添加新选项。