Вебсправочник
Ваш первый сайт

Урок: сравнить подпись option и значение select

Видимый текст варианта и передаваемое значение могут различаться. Урок помогает проверить, что логика приложения использует стабильный код, а не случайную пользовательскую подпись.

Назначение

Видимый текст варианта и передаваемое значение могут различаться. Урок помогает проверить, что логика приложения использует стабильный код, а не случайную пользовательскую подпись.

Как это работает

Создайте select id value-topic с несколькими option и явными value. Код читает выбранную option, её текст и значение всего select. Выполняйте его после разметки в своей странице.

Пример

const select = document.querySelector("#value-topic");
function reportChoice() {
  const option = select.selectedOptions[0];
  console.log({value:select.value, text:option?.textContent.trim(), index:select.selectedIndex});
}
select.addEventListener("change", reportChoice);
reportChoice();

Что должно получиться

При смене выбора журнал показывает код, подпись и индекс. Код может оставаться неизменным после перевода подписи, а индекс зависит от порядка вариантов.

Граница применения и частая ошибка

Для multiple select.value показывает только одно значение: полный выбор требует обхода selectedOptions или FormData.getAll. Если value у option не задан, текст участвует в определении значения. Не используйте индекс как постоянный идентификатор записи.

Самостоятельная проверка

Измените подпись и порядок вариантов, сохранив value. Сравните результаты. Затем включите multiple в копии и объясните, почему прежнего чтения select.value недостаточно для всех выбранных тем.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.