2016-06-21 145 views
1

我有問題可以從下面的代碼更改選項的值,根據其他選擇選擇哪些更改,但是我想更改值選擇ID = 「numbList」,感謝....根據另一個選定的下拉列表更改下拉列表中的選項值

<!DOCTYPE html> 
<html> 
<body> 

<select id="diffList" onchange="changeList()"> 
    <option value="">-- Difficulty --</option> 
    <option value="1">Easy</option> 
    <option value="2">Medium</option> 
    <option value="3">Difficult</option> 
</select> 

<select id="numbList"></select> 

<script> 
window.difficulty = {}; 
window.difficulty['1'] = [1,2,3]; 
window.difficulty['2'] = [4,5,6]; 
window.difficulty['3'] = [7,8,9]; 

function changeList() { 
    var diffList = document.getElementById("diffList"); 
    var numbRange = document.getElementById("numbList"); 
    var selectDiff = diffList.options[diffList.selectedIndex].value; 
    while(numbRange.options.length) 
    { 
     numbRange.remove(0); 
    } 
    var diff = window.difficulty[selectDiff]; 
    if(diff) 
    { 
     var i; 
     for(i = 0; i < diff.length; i++) 
     { 
      var difficulty = new Option(diff[i], i); 
      numbRange.options.add(difficulty); 
     } 
    } 
} 
</script> 

</body> 
</html> 
+0

我不明白什麼是不工作。你想讓numbList的值爲1-9而不是0-2? – mollwe

+0

'remove()'不會做你認爲它正在做的事情。相反,您應該使用父元素中的'removeChild()'。 – grochmal

+0

@mollwe ....是的,我只是想改變numbList上的值,因爲他自動出現,(0,1,2)是它的值,我想改變 – eff

回答

1

只需使用diff [I]的文字與價值選擇:

... 
for(i = 0; i < diff.length; i++) 
{ 
    var value = diff[i]; 
    var difficulty = new Option(value, value); 
    numbRange.options.add(difficulty); 
} 
... 

正如前值從選擇刪除它會選擇第一個新選項。所以你不需要設置numbList的值。

要以編程方式設置numbList的值,例如可以僅執行numbList.value = 1;

+0

我認爲它只是添加變量,而不是更改值 – eff

+0

現在我已經失去了你,我們在談論什麼價值?對我來說,NumbList.value首先沒有任何價值,那麼當我選擇「容易」Numblist.value是1,當我選擇「中等」,Numblist.value是4等我錯過了什麼? – mollwe

+0

謝謝討論,對不起,如果我的回覆太長...我的意思是當我選擇diffList「easy」,然後選擇NumbList轉換爲「1,2,3」時,我選擇diffList「中」,選擇NumbList轉換爲「4 ,5,6「,當我選擇diffList」困難「時,選擇NumList轉換爲」7,8,9「,我的意思是改變NumbList的值,即改變NumbList的值1,2, 3 - NumbList NumbList 4,5,6和7,8,9 ...謝謝 – eff

相關問題