Зависимые списки и комментарии к каждому пункту из списка
Есть простой код, где при выборе элемента выпадающего списка создается комментарий , и в скрипте есть зависимые подсписки. Мне необходимо, что бы каждому элементу основного списка было по два комментария с выводом в разные места, и к зависимому списку который формирует JS тоже необходимо по два комментария и вывод в другие области. Если с основным списком еще более менее понятно, то вот с зависимым есть сложность, как ему задать разные комментарии для разных "Подэлементов".
<label for="list1">Список 1:</label>
<select id="list1" onchange="populateList2()">
<option value="">--- Выберите ---</option>
<option value="item1" data-comment="Комментарий к элементу 1">Элемент 1</option>
<option value="item2" data-comment="Комментарий к элементу 2">Элемент 2</option>
<option value="item3" data-comment="Комментарий к элементу 3">Элемент 3</option>
</select>
<label for="list2">Список 2:</label>
<select id="list2">
<option value="">--- Выберите ---</option>
</select>
<p id="comment"></p>
Скрипт
const list1 = document.getElementById("list1");
const list2 = document.getElementById("list2");
const comment = document.getElementById("comment");
const list1Values = {
item1: {options: ["Подэлемент 1.1", "Подэлемент 1.2", "Подэлемент 1.3"], comment: "Комментарий к элементу 1"},
item2: {options: ["Подэлемент 2.1", "Подэлемент 2.2"], comment: "Комментарий к элементу 2"},
item3: {options: ["Подэлемент 3.1", "Подэлемент 3.2", "Подэлемент 3.3", "Подэлемент 3.4"], comment: "Комментарий к элементу 3"}
};
function populateList2() {
const selectedValue = list1.value;
const optionHTML = list1Values[selectedValue].options.map(value => `<option value="${value}">${value}</option>`).join("");
list2.innerHTML = `<option value="">--- Выберите ---</option>${optionHTML}`;
comment.innerText = list1Values[selectedValue].comment;
}
populateList2();
Источник: Stack Overflow на русском