我的功能根本不起作用,在我的第二个选择中没有任何反应。我想要的是在第二个选择中从数组创建选项,具体取决于第一个Select中的selectedIndex。这是我的代码:
(我真的不明白发生了什么,这段代码似乎在逻辑上是正确的。)
<html>
<head>
<script>
function Choix(form) {
var x = form.Rubrique.selectedIndex;
if (x == 0) {
return;
}
switch (x) {
case 1:
var txt = new Array ('je','tets','esti');
break;
}
case 2:
var txt = new Array ('45','7575','47');
break;
}
for (x=0;x<txt.length;i++) {
var y = document.getElementById("Page");
var option = document.createElement("option");
option.text = txt[x+1];
y.add(option);
}
}
</script>
</head>
<body>
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<SELECT NAME="Rubrique" onChange='Choix(this.form)'>
<OPTION></OPTION>
<OPTION>Plongée</OPTION>
<OPTION>Nucléaire</OPTION>
<OPTION>Bonheur</OPTION>
</SELECT>
<SELECT NAME="Page" id="Page">
<OPTION></OPTION>
</SELECT>
</body>
</html>
答案 0 :(得分:0)
而不是:
y.add(option);
你必须这样做:
y.appendChild(option);
编辑此外,您必须是:
for (x=0; x < txt.length; x++) //Counter increment was wrong
干杯
答案 1 :(得分:0)
该功能应如下所示:
function Choix(form) {
var x = form.Rubrique.selectedIndex;
if (x == 0) {
return;
}
switch (x) {
case 1:
var txt = new Array ('je','tets','esti');
break;
case 2:
var txt = new Array ('45','7575','47');
break;
}
var y = document.getElementById("Page");
y.innerHTML = '<option></option>';
for (x=0;x<txt.length;x++) {
var option = document.createElement("option");
option.text = txt[x+1];
y.add(option);
}
}
每当你在select1中选择选项时,你必须从旧值中清除select2,这就是我写y.innerHTML = '<option></option>';
的原因