Переменная сама сбрасывается JS
Я еще не очень опытный, поэтому решил обратиться сюда
У меня есть фрагмент кода:
let labels = document.getElementsByTagName('label');
let label,
input;
// Для каждого label создаем eventListener
for (let index = 0; index < labels.length; index++) {
labels[index].addEventListener('click', () => {
// 1. Получаем сам label
label = labels[index];
console.log(label);
// 2. Получаем привязанный к нему input
input = document.getElementById(label.getAttribute('for'));
// 3. Меняем состояние input
input.checked = !(input.checked);
// 4. Меняем фон
label.style.backgroundColor = input.checked ? '#E95D00' : '#C4C4C4';
})
}
Этот код отвечает за вот этот фрагмент HTML:
<div class="radio__container">
<div class="radio__item">
<input class="radio__button"type="radio" id="vk">
<label for="vk">Вконтакте</label>
</div>
<div class="radio__item">
<input class="radio__button"type="radio" id="youtube">
<label for="youtube">Youtube</label>
</div>
<div class="radio__item">
<input class="radio__button"type="radio" id="rutube">
<label for="rutube">Rutube</label>
</div>
<div class="radio__item">
<input class="radio__button"type="radio" id="telega">
<label for="telega">Telegram</label>
</div>
<div class="radio__item">
<input class="radio__button"type="radio" id="ok">
<label for="ok">Одноклассники</label>
</div>
</div>
- Я кликаю на один label, предположим на "Вконтакте"
- Как и положено
input.checked
, относящийся<input class="radio__button"type="radio" id="ok">
, принимает значение true из дефолтного для чекбокса false - Я кликаю на этот блок снова и как и положено чекбокс принял значение false
- С этого момента начинается проблема. Сразу после выполнения предыдущего eventListener'а значение
input.checkbox
сбрасывается на true.
Я достаточно долго время потратил на это, пытаясь прийти к решению этой проблемы, изучая её в отладчике...Буду рад любой помощи!