Чтобы уменьшить количество строк кода, я упростил свой код, чтобы вместо этого отобразить три деления.Я хочу, чтобы отображался конкретный элемент div, скрывая при этом два других элемента div, в зависимости от того, какой переключатель выбран.
Я на самом деле перехожу по этим двум ссылкам
Добавление прослушивателей событийдля нескольких элементов
Как проверить, выбран ли переключатель с помощью JavaScript?
во второй ссылке было предложено использовать
radios[i].type === 'radio' && radios[i].checked
для теста.
однако я изменил его на
DisplayOption[i].checked
, так как это все, что я думаю, мне нужно.Я получаю ошибку:
Uncaught TypeError: Невозможно прочитать свойство 'флажок' из неопределенного
const column = document.querySelector('.column');
const table = document.querySelector('.table');
const details = document.querySelector('.details');
onload = function() {
const DisplayOption = document.getElementsByClassName("DisplayOption");
for (i = 0; i < DisplayOption.length; i++) {
DisplayOption[i].addEventListener('click', function() {
if (DisplayOption[i].checked) {
if (displyOption[i].value === "column") {
column.style.display = "grid";
table.style.display = "none";
table.details.style.display = "none";
} else if (displyOption[i].value === "table") {
column.style.display = "none";
table.style.display = "block";
table.details.style.display = "none";
} else {
column.style.display = "none";
table.style.display = "none";
table.details.style.display = "block";
}
}
}, false);
}
}
.column {
display: grid;
}
.table {
display: none;
}
.table.details {
display: none;
}
<input type="radio" name="DisplayOption" value="column" class="DisplayOption" checked>
<input type="radio" name="DisplayOption" value="table" class="DisplayOption">
<input type="radio" name="DisplayOption" value="details" class="DisplayOption">
<div class="column"> The first div is being displayed </div>
<div class="table"> The second div is being displayed</div>
<div class="table details"> The third div is being displayed </div>