Задать вопрос
@holllop

Select не прогружает варианты выбора, не могу разобраться, почему?

у меня конструкция типа
<tr>
      <td class="first_row">1. <button class="add1">+</button>
      </td>
      <td>
        <select class="val" id="select1">
        </select><!--выбор типа работы-->
      </td>
      <td>
        <select class="val" id="select2">
        </select><!--выбор принтера-->
      </td>
      <td>
        <select class="val" id="select3">
        </select><!--выбор материала-->
      </td>
      <td>
        <input class="val" type="date" />
      </td><!--дата-->
      <td>
        <select class="val" id="select4">
        </select><!--выбор исполнителя-->
      </td>
      <td>
        <select class="added" id="select5">
        </select><!--выбор формата-->
        <button class="add">+</button>
      </td>
      <td>
        <input type="number" class="number" />
      </td>
      <td>
        <input type="number" class="number"/>
      </td>
      <td>
        <input type="number" class="number"/>
      </td>
      <td>
        <input type="number" class="number"/>
      </td>
    </tr>

и я для всех select варианты подгружаю с JSON
const selectElements = document.querySelectorAll('.val');
const addButtons = document.querySelectorAll('.add1'); 
const departmentSelect = document.querySelector('#department');

// Функция для создания option элементов
function createOption(value, text) {
  const option = document.createElement('option');
  option.value = value;
  option.textContent = text;
  return option;
}

function loadSelectOptions1(url, selectElement) {
  return fetch(url)
    .then(response => {
      if (!response.ok) {
        throw new Error('Ошибка загрузки данных');
      }
      return response.json();
    })
    .then(data => {
      data.forEach(item => {
        const option = createOption(item.type_work, item.type_work);
        selectElement.appendChild(option);
      });
    })
    .catch(error => {
      console.error(error);
    });
}

// Функция загрузки опций для 2 <select>
function loadSelectOptions2(url, selectElement) {
  return fetch(url)
    .then(response => {
      if (!response.ok) {
        throw new Error('Ошибка загрузки данных');
      }
      return response.json();
    })
    .then(data => {
      data.forEach(item => {
        const option = createOption(item.printer_id, item.printer);
        selectElement.appendChild(option);
      });
    })
    .catch(error => {
      console.error(error);
    });
}

// Функция загрузки опций для 3 <select>
function loadSelectOptions3(url, selectElement) {
  return fetch(url)
    .then(response => {
      if (!response.ok) {
        throw new Error('Ошибка загрузки данных');
      }
      return response.json();
    })
    .then(data => {
      data.forEach(item => {
        const option = createOption(item.printer_id, item.material);
        selectElement.appendChild(option);
      });
    })
    .catch(error => {
      console.error(error);
    });
}

// Функция загрузки опций для 4 <select>
function loadSelectOptions4(url, selectElement) {
  return fetch(url)
    .then(response => {
      if (!response.ok) {
        throw new Error('Ошибка загрузки данных');
      }
      return response.json();
    })
    .then(data => {
      data.forEach(item => {
        const option = createOption(item.performer_id, item.performer);
        selectElement.appendChild(option);
      });
    })
    .catch(error => {
      console.error(error);
    });
}

// Функция загрузки опций для 5 <select>
function loadSelectOptions5(url, selectElement) {
  return fetch(url)
    .then(response => {
      if (!response.ok) {
        throw new Error('Ошибка загрузки данных');
      }
      return response.json();
    })
    .then(data => {
      data.forEach(item => {
        const option = createOption(item.printer_id, item.format);
        selectElement.appendChild(option);
      });
    })
    .catch(error => {
      console.error(error);
    });
}
function loadSelectData() {
  // Загрузка данных для select c классом 'val'
  selectElements.forEach((selectElement, index) => {
    switch (index) {
      case 0:
        loadSelectOptions1('http://:3000/type_work', selectElement);
        break;
      case 1:
        loadSelectOptions2('http://:3000/printerCB', selectElement);
        break;
      case 2:
        loadSelectOptions3('http://:3000/printer_material?printer_id=2', selectElement);
        break;
      case 3:
        
        break;
      case 4:
        loadSelectOptions4('http://:3000/performers', selectElement);
        break;
      case 5:
        loadSelectOptions5('http://:3000/printer_format?printer_id=2', selectElement);
        break;
    }
  });
}
window.addEventListener('DOMContentLoaded', () => {
  loadSelectData();
});

И что я только не делал и JSON проверял, там всё работает. И в другой case совал эти данные, они выводятся. И другие способы хотел придумать, но в голову не чего не лезет. В чём проблема не пойму. Почему в select 5 не выводятся данные ?
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
DanArst
@DanArst Куратор тега JavaScript
Гриффиндор в моде при любой погоде!
selectElements - это select-ы с классом val, а у select5 у тебя такого класса нет, есть только added
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
10 дек. 2024, в 14:35
6000 руб./за проект
10 дек. 2024, в 14:26
100000 руб./за проект
10 дек. 2024, в 13:42
10000 руб./за проект