#dom #javascript-objects
#dom #javascript-объекты
Вопрос:
HTML
<div class="options-container">
<select id="all-options">
<option value="0" selected>NY</option>
<option value="1">LA</option>
<option value="2">Toronto</option>
<option value="3">Paris</option>
</select>
</div>
JS
let selectedOption = {};
let allOptions = document.getElementById('all-options');
let optionValue = allOptions.options[all-options.selectedIndex].value;
if (optionValue == "0") {
selectedOption.value === "0"
} else if (optionValue === "1") {
selectedOption.value === "1"
} else if (optionValue === "2") {
selectedOption.value === "2"
} else if (optionValue === "3") {
selectedOption.value === "3"
};
Я пытаюсь указать текущее значение элемента списка опций в моем HTML-файле с помощью JS, чтобы я мог добавить это значение к объекту selectedOption. Значение может быть добавлено либо в виде объекта string, либо number.
Комментарии:
1. Ваш вопрос неясен — каков именно ваш ожидаемый результат?
2. Спасибо за комментарий. У меня есть выпадающее меню, и я хочу упорядочить свой JS так, чтобы при выборе LA значение «1» было перенесено в объект selectedOption, и так далее, и тому подобное.
Ответ №1:
Определение прослушивателя событий
Вы захотите определить прослушиватель событий в своем <select>
. Например:
function onSelectItem(evt)
{
let value = evt.target.selectedOptions[0].value;
let text = evt.target.selectedOptions[0].text;
// Assign it how you want here:
selectedOption = value;
}
На самом деле вы не можете «нажать» на объект. Если вы имели в виду массив, измените выбранный параметр на массив ( []
) и сделайте selectedOption.push(value)
. Однако, если вам нужен полезный объект, вы можете просто назначить его evt.target.selectedOptions[0]
.
Подключение прослушивателя
После этого вы можете прикрепить его в html и передать объект события через event
переменную по умолчанию:
<select id="all-options" onchange="onSelectItem(event)">
<option value="0">NY</option>
<option value="1">LA</option>
<option value="2">Toronto</option>
<option value="3">Paris</option>
</select>
или больше Javascript при загрузке страницы (установив для onload
атрибута значение "init()"
в <body>
):
function init()
{
let menu = document.getElementById('all-options');
menu.addEventListener('change', onSelectItem);
// Since it seems that you also want a default selected value when the
// page loads, you should probably also initialize your `selectedOption` to `0`.
selectedOption = menu.selectedOptions[0].value;
}