Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于select DOM对象,add()和appendChild()是否相同?_Javascript_Dom_Select_Object - Fatal编程技术网

Javascript 对于select DOM对象,add()和appendChild()是否相同?

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

我正在开发一个小型web应用程序,它可以更改select下拉列表的内容

我想知道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);

在这种情况下,我相信他们会完成同样的任务

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()
方法。