Показать сообщение отдельно
  #10 (permalink)  
Старый 29.06.2022, 00:29
Новичок на форуме
Отправить личное сообщение для VampireFang Посмотреть профиль Найти все сообщения от VampireFang
 
Регистрация: 28.06.2022
Сообщений: 8

const options = generateOptions();
const chainedSelects = document.querySelector(".chained-selects");
chainedSelects.addEventListener("change", onChange, false);
draw(chainedSelects.firstChild, options);

function onChange(event) {
  const { target } = event;
  let node = target, path = [];

  while (node = node.nextElementSibling) {
    node.length = 1;
    node.disabled = false;
  }

  if (target.selectedIndex === 0) return;

  node = target;
  do path.push(node.value);
  while (node = node.previousElementSibling);

  if (target.nextElementSibling && target.nextElementSibling.options) {
    const option = path.reduceRight((option, property) => option[property], options);
    draw(target, option);
  } else { return;
    const option = path.slice(1).reduceRight((option, property) => option[property], options);
    const value = option[target.value];
    if (value == null) return;
    location.href = value.url || value;
  }
}

function draw(target, option) {
  for (const [property, value] of Object.entries(option))
    target.nextElementSibling.add(new Option(property, property));
  target.nextElementSibling.disabled = false;
  target.addEventListener('click', function(event) {
	var target = event.target;
});
}

function generateOptions() {
  return {
    "AUDI": {
      "80": {
        url: "p1.html"
      },
      "100": {
        url: "p1.html"
      }
    },
    "BMW": {
      "3 series": {
        url: "p1.html"
      },
      "5 series": {
        url: "p1.html"
      }
    }
  };
}

В общем плане все так. Но вот ещё. Как сделать переход по ссылке при выборе, например, AUDI 80, кликнув на кнопку "найти. Так же если выбрать просто AUDI
Ответить с цитированием