刚刚又测试了一下,如果不用document.createElement("OPTION");
而用new Option
就可以实现这个目的,不过还是想知道为什么
document.createElement("OPTION");就不能在添加后直接赋值呢?
而用new Option
就可以实现这个目的,不过还是想知道为什么
document.createElement("OPTION");就不能在添加后直接赋值呢?
obj.value = 4;
obj.selectedIndex = 4;
selectedIndex的值也是12345..
这是选择之前就有的
跟选择动作无关
但是奇怪的是,报错后,值还是变过来了。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">
function InsertOpn(){
var obj = document.getElementById("s1");
// 清空下拉框
while(obj.options.length > 0)
obj.options.remove(0);
for(var i = 0; i < 10; i++){
var opn = document.createElement("OPTION");
opn.innerText = "option" + i;
opn.value = i;
obj.appendChild(opn);
}
//obj.value = 4; // 直接赋值,不能实现目的
obj.options[2].selected=true;
alert(obj.selectedIndex);
obj.selectedIndex =5;
alert(obj.selectedIndex);
obj.options.selectedIndex =4;
alert(obj.selectedIndex);
}
</script>
</head>
<body>
<form name="Form1" method="post" action="test4.asp">
<input type="button" name="a1" onclick="InsertOpn();" value="初始化下拉框">
<input type="button" name="a1" onclick="alert(document.getElementById('s1').selectedIndex);" value="显示下拉框的值">
<br>
<select name="s1" id="s1">
</select>
</form>
</body>
</html>
会报错。
使用new Option可以解决问题,只是我觉得很奇怪,为什么使用
document.createElement("OPTION")
就必须延迟一段时间才可以使用。
obj.options[3].setAttribute("selected",true);