2014-01-12 89 views
0

我的功能根本不起作用,在我的第二个选择中没有任何反应。我想要的是从第二个选择中的数组中创建选项,具体取决于第一个Select中的selectedIndex。这里是我的代码:在另一个选择标记(onchange)的第二个选择中放入一个数组0123选择标记(onchange)

(我真不明白这是怎么回事,这个代码似乎在逻辑上正确的..)

<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

你有一个语法错误。在case 2之前删除'}': – Curious

+0

在循环中用'x ++'代替'i ++' – Curious

回答

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); 
    } 
} 

您选择的选项中选择1,你必须从旧值清除选择2每一次,这就是为什么我写y.innerHTML = '<option></option>';

+0

好极了!我正在寻找如何清理我的旧价值观,哈哈。谢谢ZUB,+1为您的答案!它工作完美! – user3038607

0

相反的:

y.add(option); 

你要做的:

y.appendChild(option); 

编辑此外,您的必须是:

for (x=0; x < txt.length; x++) //Counter increment was wrong 

干杯

相关问题