#javascript #html
#javascript #HTML
Вопрос:
У меня есть следующий простой пример:
<!DOCTYPE html>
<html>
<body>
<select id="mySelect">
<option>Apple</option>
<option>Orange</option>
<option>Pineapple</option>
<option>Banana</option>
</select>
<script>
document.addEventListener("change", function () {
var x = document.getElementById("mySelect");
var y = x.options[x.selectedIndex];
alert(y);
}
</script>
</body>
</html>
когда я выбираю опцию в своем списке, предупреждение не появляется. Я также пытался с:
var y = x.options[x.selectedIndex].index;
но не могу вернуть номер индекса заданной опции. Когда я использую .text вместо .index (чтобы получить текст из опции), он также не работает
Комментарии:
1. Вы должны открыть консоль и проверить наличие ошибок. В вашем коде несбалансированные круглые скобки. Должно быть закрыто как опечатка.
Ответ №1:
Проблема с синтаксисом (отсутствует addEventListener
закрывающая скобка).
document.addEventListener("change", function () {
var x = document.getElementById("mySelect");
var y = x.options[x.selectedIndex].index;
alert(y);
}); // missing ) here
<select id="mySelect">
<option>Apple</option>
<option>Orange</option>
<option>Pineapple</option>
<option>Banana</option>
</select>
Ответ №2:
вы хотите получить доступ textContent
к выбранной опции?
(потому что он value
доступен напрямую при выборе)
прослушиватель событий также должен использоваться при выборе, чтобы использовать this
const mySelect = document.getElementById('my-select')
mySelect.addEventListener("change", function ()
{
console.clear()
console.log( 'value=', this.value, ' || content=', this.options[this.selectedIndex].textContent)
})
<select id="my-select">
<option value="A">Apple</option>
<option value="O">Orange</option>
<option value="P">Pineapple</option>
<option value="B">Banana</option>
</select>
Комментарии:
1. когда я пишу:
document.addEventListener("change", function () { var x = document.getElementById("mySelect"); var y = x.options[x.selectedIndex].index; alert(y); })
тогда не нужно использовать EventListener для выбора, он работает нормально2. @Muska затем вы получаете ВСЕ изменения событий для всего в документе, а также для других элементов вашей страницы, которые не выбраны вами