function updateAllSelects() { const selects = Array.from(container.querySelectorAll('select.item-select')); // Получаем текущие выбранные значения для каждого селекта const selectedValues = selects.map(s => s.value); selects.forEach((select, idx) => { const currentValue = select.value; // Список выбранных в других селектах const otherSelected = selectedValues.filter((val, i) => i !== idx); // Формируем доступные опции для этого селекта: // Все элементы массива кроме тех, что заняты в других селектах, // плюс текущее выбранное значение (даже если оно занято, чтобы не сбросить выбор) const availableOptions = items.filter(item => { return !otherSelected.includes(item) || item === currentValue; }); // Сохраняем позицию курсора (если нужно) // Очищаем и создаём опции заново select.innerHTML = ''; availableOptions.forEach(optionValue => { const option = document.createElement('option'); option.value = optionValue; option.textContent = optionValue; select.appendChild(option); }); // Если текущее значение стало недоступно - выбрать первый доступный вариант if (!availableOptions.includes(currentValue)) { select.value = availableOptions.length > 0 ? availableOptions[0] : ''; selectedValues[idx] = select.value; // обновляем выбранные значения } else { select.value = currentValue; } }); }