`
zbm2001
  • 浏览: 15837 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

select标签元素 操作option方法的一些细节

阅读更多
<form name="form1" action="" method="">
<select name="select1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</form>

var select1 = document.form1.select1;

/********** 清空所有option **********/

// 一个很取巧的方法,兼容所有浏览器
select1.length = 0;


/********** 删除一个option **********/

// 在options对象上操作,FF会报错——没有该方法,其他浏览器则可以正常操作:
select1.options.remove(0)

// 兼容的标准方法是在select上操作
select1.remove(0)


/********** 添加一个option **********/

// DOM方式新增一个option
var opt = document.createElement("option");
opt.text = "这是一个新增的选项";
opt.value = "newAdd1";
// js对象方式新增一个option
var opt = new Option("这是一个新增的选项", "newAdd1");

// 在select上操作,FF会报错,safari不能插入正确的索引位置,IE和opera则可以正确操作:
select1.add(opt, 0)
// 原来FF中,select元素的add方法的第二个参数必须为一个option,这一点和appendChild方法很相似,safari虽非必须,却不能正确操作索引。
// 但经过修改后,IE无法正常操作——也未报错,其他浏览器则可以正确操作
select1.add(opt, select1[0])

// 兼容的标准方法是在options对象上操作
select1.options.add(opt, 0)

注意:
当add(opt, 0)方法的第二个参数是在当前的option索引数范围内,则插入该参数索引的位置,原来的当前及之后索引的option则依次向后位移;
若第二个参数大于原option索引数范围,则视同插入原option.length的位置

// 如果你是在原option索引数范围后追加,再介绍一个偷巧的方式

select1.length = 4;
select1[3] = opt;

// 这种方式咋一看没什么特别的,但你可以像以下这样操作,创建并追加一个option:

select1.length = 4;
select1[3].text = "这是一个新增的选项";
select1[3].value = "newAdd1";

// 并且,你可以根据需要设置select1.length的长度,迭代如此创建追加

// 关键是:设置select1.length的长度后,浏览器会自动生成补位的option,采用这种属性赋值方法,速度要比上两种方法快上好几倍,不信你试试 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics