Автоматический выбор опции в выпадающем списке по названию

Привет, народ! Никак не могу найти решение для своей задачи. Нужно написать скрипт, который автоматически выберет опцию из выпадающего списка по названию, а не по значению. И чтобы после выбора сайт сразу показал результаты.

У меня есть такой код:

<select name="выбор_страны" id="country_select" class="dropdown" onchange="showResults(this.value)">
  <option value="0">Выберите страну</option>
  <option value="1">Франция</option>
  <option value="2">Германия</option>
  <option value="3">Италия</option>
  <option value="4">Испания</option>
</select>

Как сделать, чтобы скрипт выбрал, например, “Италия” и сразу запустил функцию showResults? Буду благодарен за помощь!

Привет! Я тоже сталкивался с похожей задачей. вот что можно сделать:

  1. найти нужную опцию по тексту
  2. установить ее значение
  3. вызвать функцию showResults

примерно так:

function выбратьСтрану(название) {
  let список = document.getElementById('country_select');
  for (let опция of список.options) {
    if (опция.text === название) {
      список.value = опция.value;
      showResults(опция.value);
      break;
    }
  }
}

выбратьСтрану('Италия');

надеюсь, это поможет! дай знать, если будут вопросы.

На самом деле тут можно обойтись без цикла, используя Array.find(). Вот более оптимальный вариант:

const select = document.getElementById(‘country_select’);
const option = Array.from(select.options).find(opt => opt.text === ‘Италия’);

if (option) {
select.value = option.value;
showResults(option.value);
}

Этот код найдет нужную опцию, установит ее значение и вызовет showResults. Работает быстрее, особенно на больших списках. Проверь, должно сработать!

Можно попробовать такой вариант - найти опцию по тексту через querySelector, установить ее как выбранную и вызвать событие change:

const список = document.getElementById(‘country_select’);
const италия = список.querySelector(‘option[value=“3”]’);
италия.selected = true;
список.dispatchEvent(new Event(‘change’));

Должно сработать, но лучше проверить. Как думаешь, подойдет такое решение?