2014-01-12 87 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 

乾杯

相關問題