首页 » JavaScript » 添加(option)选项

添加(option)选项

可以使用JavaScript动态创建选项,并将它们添加到选择框中。添加选项的方式有很多,第一种方式就是使用如下所示的DOM方法:

var selectbox = document.getElementById("selLocation");
var newOption = document.createElement("option");
newOption.appendChild(document.createTextNode("Option text"));
newOption.setAttribute("value", "Option value");

selectbox.appendChild(newOption);

以上代码创建了一个新的<option>元素,然后为它添加了一个文本节点,并设置其value特性,最后将它添加到了选择框中。

第二种方法是使用Option构造函数来创建新选项,Option构造函数接受两个参数:文本(text)和值(value);第二个参数可选。虽然这个构造函数会创建一个Object的实例,但兼容DOM的浏览器会返回一个<option>元素。我们仍然可以使用appendChild()将新选项加到选择框中。来看下面的例子:

var newOption = new Option("Option text", "Option value");
selectbox.appendChild(newOption);  //在IE中有问题

这种方式在除IE之外的浏览器中都可以使用。由于存在BUG,IE在这种方式下不能正确设置新选项的文本。

第三种添加新选项的方式是使用选择框的add()方法。DOM规定这个方法接受两个参数:要添加的新选项将位于新选项之后的选项。如果项在列表最后添加一个选项,应该将第二个参数设置为null。在IE对add()方法的实现中,第二个参数是可选的,而且如果指定,该参数必须是新选项之后选项的索引。兼容DOM的浏览器要求必须指定第二个参数,因此要像编写跨浏览器的代码,就不能值传入一个参数。这时候,为第二个参数传入undefined,就可以在所有浏览器中都将新选项插入到列表最后了。来看一个例子:

var newOption = new Option("Option text", "Option value");
selectbox.add(newOption, undefined);  //最佳方案

在IE和兼容DOM的浏览器中,上面的代码都可以正常使用。如果你项将新选项添加到其它位置(不是最后一个),就应该使用标准的DOM技术和insertBefore()方法。

此文章发表在 JavaScript 标签为 . 将固定链接加入收藏.