在另一个选择标记的第二个选择中放置一个数组(onchange)

时间:2014-01-12 08:00:19

标签: javascript html forms onchange

我的功能根本不起作用,在我的第二个选择中没有任何反应。我想要的是在第二个选择中从数组创建选项,具体取决于第一个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>

2 个答案:

答案 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>';的原因