2017-10-15 131 views
0

我想要在下拉菜單中訪問選定選項的值。我一直留下一個「未定義」的值。Javascript下拉菜單值

這裏是我創建的HTML列表:

function setDifficulty() { 
 
    var difficultySelector = document.getElementById("difficulty"); 
 
    var difficulty = difficultySelector.selectedIndex; 
 

 
    if (difficulty.options[difficulty.selectedIndex].value == "0") { 
 
    window.alert("easy"); 
 
    } else if (difficulty.options[difficulty.selectedIndex].value == "1") { 
 
    window.alert("medium") 
 
    } else if (difficulty.options[difficulty.selectedIndex].value == "2") { 
 
    window.alert("hard"); 
 
    } else 
 
    window.alert(difficulty.value); 
 
}
<select id="difficulty" onchange="setDifficulty();"> 
 
    <option value="0">Easy</option> 
 
    <option value="1">Medium</option> 
 
    <option value="2">Hard</option> 
 
</select>

我在做什麼錯?

+0

難度已經給你的索引,因此你不要再次使用difficulty.selectedIndex –

+0

大多數瀏覽器都支持'的document.getElementById(「難度」)value' - 它確實幫助,如果你有一個「請選擇」以允許onchange觸發 – mplungjan

回答

0

下面的代碼將工作

function setDifficulty() { 
    var difficultyElt = document.getElementById("difficulty"); 
    var value = difficultyElt.options[difficultyElt.selectedIndex].value; 
    if (value == "0") { 
     window.alert("easy"); 
    } else if (value == "1") { 
     window.alert("medium") 
    } else if (value == "2"){ 
     window.alert("hard"); 
    } 
} 

此外,您還可以輸出文本直接值:

var difficultyElt = document.getElementById("difficulty"); 
var text = difficultySelector.options[difficultySelector.selectedIndex].text; 
window.alert(text); 
0

您可以指定下拉菜單的onChange處理JavaScript和從那裏得到的值如下所示:

document.getElementById("difficulty").onchange = function() { 
 
    if (this.value == "0") { 
 
    window.alert("easy"); 
 
    } else if (this.value == "1") { 
 
    window.alert("medium") 
 
    } else if (this.value == "2") { 
 
    window.alert("hard"); 
 
    } else 
 
    window.alert(this.value); 
 
}
<select id="difficulty"> 
 
<option value="0">Easy</option> 
 
<option value="1">Medium</option> 
 
<option value="2">Hard</option> 
 
</select>

+0

但onchange不會觸發第一個選項 – mplungjan

+0

然後,當文檔加載以獲取下拉列表的值時,您將不得不添加單獨的函數。 – KatoFett

0

您可以輕鬆從輸入中獲取值。你不需要這些棘手的價值計算。另外,當你想使用特定的值時,最好使用switch-case。它看起來更清潔並且需要更少的代碼。

function setDifficulty() { 
 
    var difficultySelector = document.getElementById("difficulty"); 
 
    var difficulty = difficultySelector.value; 
 
    
 
    switch (difficulty) { 
 
     case "0": 
 
     window.alert("easy"); 
 
     break; 
 
     case "1": 
 
     window.alert("medium"); 
 
     break; 
 
     case "2": 
 
     window.alert("hard"); 
 
     break; 
 
     default: 
 
     window.alert(difficulty.value); 
 
    } 
 
}
<select id="difficulty" onchange="setDifficulty();"> 
 
       <option value="0">Easy</option> 
 
       <option value="1">Medium</option> 
 
       <option value="2">Hard</option> 
 
      </select>

+0

除了第一個選擇 – mplungjan

+0

@mplungjan沒有觸發onchange,請解釋一下。我無法理解你的想法。另外,據我瞭解,問題是要獲得價值。 – Sergey

+0

您無法在無法更改的值上觸發onchange。爲了讓價值變得容易,你首先必須改變爲另一種選擇。你需要一個「請選擇」和一個空的測試 – mplungjan