Многие проблемы с вашим кодом:
Во-первых: избегайте присвоения дублирующих идентификаторов различным элементам.Идентификатор должен / должен быть уникальным во всем HTML.Никакие два элемента не должны иметь одинаковый идентификатор.Потому что если вы сделаете это, вы получите непредвиденные результаты, если позвоните .getElementById()
.
Секунда: нет необходимости присваивать идентификаторы элементам <option>
, если только вам это не нужно.В вашем случае это не выгодно.
В-третьих: даже если вам нужно назначить разные идентификаторы элементам <option>
, избегайте пробелов в строке идентификатора, поскольку это также приведет к нежелательным результатам.
В-третьих: если вы хотите распечатать только выбранное значение, вам не нужно везде использовать оператор if-then для проверки каждого возможного значения.Используйте if-then, только если вы будете обрабатывать каждый случай по-разному.В вашем случае оператор switch сделает ваш код более читабельным и коротким.
Я внес в ваш код некоторые изменения, чтобы отразить те моменты, о которых я говорил выше.
window.onload = function() {
document.getElementById("submit").onclick = showStudents;
}
function showStudents() {
var n = document.getElementById("sel_students");
var name = n.options[n.selectedIndex].value;
var output = document.getElementById("div_students");
output.innerHTML = name;
switch (name) {
case "mary jones":
output.innerHTML += " <br> Hi Mary..";
break;
case "jane doe":
output.innerHTML += " <br> Good bye Jane";
break;
case "henry miller":
output.innerHTML += "<br> Good afternoon";
break;
case "john smith":
output.innerHTML += "<br> no pokahontis here";
break;
}
}
<div id="div_students">
<form id="form_students" action="" method="GET">
<select name="students" id="sel_students">
<option value="john smith">John Smith</option>
<option value="jane doe">Jane Doe</option>
<option value="henry miller">Henry Miller</option>
<option value="mary jones">Mary Jones</option>
</select>
<br><br>
<input id="submit" type="submit">
</form>
</div>