@holllop

Select зависящий от select, не могу понять как улучшить?

Есть у меня таблица в ней ячейки которые и представляют собой select
<td>
        <select id="select1">
        </select>
</td>
<td>
        <select id="select2">
        </select>
</td>

Их option я получаю с помощью fetch
вот такой конструкцией
selectElement1.addEventListener('change', () => {
  const selectedValue = selectElement1.value;
  
  // Очистить второй select-элемент
  selectElement2.innerHTML = '';

  if (selectedValue === 'Чёрно-белая печать') {
    fetch('http://пример/printerCB')
      .then(response => response.json())
      .then(data => {
        data.forEach(item => {
          const option = document.createElement('option');
          option.value = item.printer;
          option.textContent = item.printer;
          selectElement2.appendChild(option);
        });
      })
      .catch(error => {
        console.error(error);
        // Обработать ошибку
      });
  } else if (selectedValue === 'Цветная печать') {
    fetch('http://пример/printerColor')
      .then(response => response.json())
      .then(data => {
        data.forEach(item => {
          const option = document.createElement('option');
          option.value = item.printer;
          option.textContent = item.printer;
          selectElement2.appendChild(option);
        });
      })
      .catch(error => {
        console.error(error);
        // Обработать ошибку
      });
  }
});

И эта конструкция работает, но не совсем так как я хочу. Получилось у меня так, что после загрузки страницы я получаю вот такую картину
65095d0c08c11720560466.png
и как видно нет вариантов во второй ячейке и так пока я не выберу "Цветная печать" в первом выборе, после чего вся эта конструкция начинает работать полностью правильно. Но я хотел бы убрать этот косяк с тем что нет первичного значения второго столбца, но не могу догадаться как это сделать.
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Ну ведь очевиден же ответ.
Сейчас ваш код срабатывает по событию - это следует и из самого кода и из наблюдаемого поведения.
Вам нужно, чтобы он срабатывал и при загрузке страницы тоже.
Вынесите логику в отдельную именованную функцию и вызовите её руками дополнительно. Ну или просто автоматически триггерите событие на нужном элементе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект
21 нояб. 2024, в 21:30
500 руб./за проект