установите переключатель при нажатии на li с помощью javascript

#javascript #html

#язык JavaScript #HTML

Вопрос:

У меня есть переключатель

Html-код:

 lt;input type="radio" class="first" name="bright" checkedgt; lt;input type="radio" class="second" name="bright" gt; lt;input type="radio" class="third" name="bright"gt; lt;input type="radio" class="four" name="bright"gt;  

И у меня есть навигационная панель

Html-код

 lt;ul class="nav"gt;  lt;li class="st st1 active" data-cont="first"gt; lt;h2 class="inner"gt;وزارة الاستثمارlt;/h2gt; lt;/ligt; lt;li class="st st2" data-cont="second"gt; lt;h2 class="inner"gt;وزارة التجارةlt;/h2gt; lt;/ligt; lt;li class="st st3" data-cont="third"gt; lt;h2 class="inner"gt;جهات حكومية اخرىlt;/h2gt; lt;/ligt; lt;li class="st st4" data-cont="four"gt; lt;h2 class="inner"gt;مكتب هندسيlt;/h2gt; lt;/ligt;  lt;/ulgt;  

Эти 2 соединены с данными-продолжением, которые имеют класс переключателя

Я хочу, чтобы при нажатии на li правильный переключатель проверялся с помощью javascript

Я попытался сделать это, используя этот код в JavaScript

 let radio = document.querySelectorAll("input"); let radioArray = Array.from(radio); let tabs = document.querySelectorAll(".nav li"); let tabsArray = Array.from(tabs);   tabsArray.forEach((ele) =gt; {  ele.addEventListener("click", function (e) {  tabsArray.forEach((ele) =gt; {  ele.classList.remove("active");  });  e.currentTarget.classList.add("active");  document.querySelector(e.currentTarget.dataset.cont).checked = true;  }); });  

Я пытаюсь удалить активный класс из li и поместить его в li, где я нажимаю, затем я хочу, чтобы переключатель был установлен

Кто-нибудь может мне в этом помочь?

Ответ №1:

последний элемент запроса-это место, где ваш код терпит неудачу, вы не ссылаетесь на класс для ввода, он должен быть document.querySelector('.' e.currentTarget.dataset.cont).checked = true; отмечен префиксом «.»

Хотя это отвечает на ваш вопрос, вероятно, более полезно указать, что, изменив разметку html, чтобы она была немного более доступной, вы можете устранить необходимость во всем javascript в вашем примере

напр.

 input:checked   label {  color:Red; } 
 lt;divgt;lt;input type="radio" id="first" name="bright" checkedgt; lt;label for='first'gt;وزارة الاستثماlt;/labelgt; lt;/divgt; lt;divgt; lt;input type="radio" id="second" name="bright" gt; lt;label for='second'gt;وزارة التجارةlt;/labelgt; lt;/divgt; lt;divgt; lt;input type="radio" id="third" name="bright"gt; lt;label for='third'gt;جهات حكومية اخرىlt;/labelgt; lt;/divgt; lt;divgt; lt;input type="radio" id="four" name="bright"gt; lt;label for='four'gt;مكتب هندسيlt;/labelgt; lt;/divgt; 

Использование меток, связанных с вашими переключателями, теперь значительно более доступно, и вы можете значительно сократить большую часть своей разметки ( хотя для того, чтобы быть доступным, вам нужно будет указать более значимое имя for атрибута.