013-为列表框、下拉菜单添加选项

为列表框、下拉菜单添加子节点,也就是为列表框、下拉菜单添加选项。添加选项有两种方法:

  • 调用HTMLSelectElement的add()方法添加选项
  • 直接为<select……>的指定选项复制
    HTMLSelectElement包含如下方法用于添加新选项。
  • add(HTMLOptionElement option,HTMLOptionElement before):在before选项之前添加option选项。如果想将option选项添加在最后,则将before指定为null即可;或者依然使用之前介绍的appendChild(option)添加异可。

下面的diamante示范了通过这种方式来添加选项。

	<!DOCTYPE html>
	<html>
		<head>
			<meta http-equiv="content-type" content="text/html"/>
			<title>创建节点</title>
			
		</head>
		<body id='test'>
			<script type="text/javascript">
				var a = document.createElement("select");
				for(var i=0;i<10;i++){
					var op = document.createElement("option");
					op.innerHTML = '新增选项'+i;
					a.add(op,null);
				}
					a.size = 5;
					document.getElementById("test").appendChild(a);
			</script>
		</body>
	</html>

在这里插入图片描述

上面的代码在IE8以前的代码会出现错误,主要是因为它不允许调用add()方法时指定最后一个参数为null。为了避免这种情况,可直接为指定选项复制的方法来添加选项。

为指定选项复制所支持的值必须是一个有效的选项,创建选项除了可使用前面所示的createElement()方法之外,还可以使用如下构造器。

new Option(text,value,defaultSelected,selected)

构造器有4个参数,这4个参数说明如下:

  • text:该选项的文本,即该选项所呈现的‘内容’
  • value:选中该选项值
  • defaultSelected:设置默认是否选中该选项
  • selected:设置该选项当前是否被选中

并不是每次构造该选项都需要指定4个参数,也可以至指定一个参数或者两个参数。如果构造Option对象只指定了一个参数,则该参数是option的text值;如果指定了两个参数,则第一个参数是text,第二个参数是value。

注意:在早期的IE浏览器(如IE8之前的浏览器)中运行时,如果直接为指定列表赋值,则赋值的<option……/>元素必须是通过new Option()方法得到的,而不能是通过document.createElement("option")得到的。

下面代码示范了利用第二种方式来为列表框、下拉菜单添加选项。

	<!DOCTYPE html>
	<html>
		<head>
			<meta http-equiv="content-type" content="text/html"/>
			<title>创建节点</title>
			
		</head>
		<body id='test'>
			<script type="text/javascript">
				var a = document.createElement("select");
				a.style.width = "200px";
				for(var i=0;i<10;i++){
					var op = new Option("这是一首简单的小情歌"+i,i);
					a.options[i] = op;
				}
				a.size = 5;
				document.getElementById("test").appendChild(a);
			</script>
		</body>
	</html>

在这里插入图片描述
上面的代码可以再Firefox、Opera、Chrome、Safari、IE等各种主浏览器中运行良好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值