При выделении всех чекбоксов отметить и чекбокс 'Все' с помощью js

Есть несколько чекбоксов:

Главный, при нажатии на который ставятся/убираются все галочки

<label htmlFor='all' className='check'>
    <input id='all' type="checkbox" value='Все' 
            className='checkInput mainCheckbox'
            defaultChecked={flagCheckbox}
            onChange={changeMainChekbox}
                />
    <span className='checkBox' />
    <span className='text'>
        Все
    </span>
</label>

остальные чекбоксы ( 4шт )

<label htmlFor={name} className='check'>
    <input id={name} type="checkbox" value={value} 
            className='checkInput otherCheckbox'
            onChange={changeAllChekbox}
            defaultChecked={checkState}
                />
    <span className='checkBox' />
    <span className='text'>{value}</span>
</label>

необходимо сделать так, чтобы при выделении всех 4 чекбоксов с классом 'otherCheckbox' отмечался главный чекбокс с классом 'mainCheckbox' если при включенном чекбоксе 'mainCheckbox' снимается любой другой чекбокс 'otherCheckbox' - чекбокс 'mainCheckbox' тоже снимается

пробовала проверять состояние чекбокса 'otherCheckbox', если true, то добавлять этот инпут в массив, потом планировала проверять длину этого массива, если она = 4, то ставить чекбокс 'mainCheckbox' в активное состояние, но в массиве у меня всегда оказывался только один инпут


Ответы (1 шт):

Автор решения: Aziz Umarov

Можно сделать так

let allCheckBox = document.querySelector('.mainCheckbox');
let otherCheckBoxes = document.querySelectorAll('.otherCheckbox');

otherCheckBoxes.forEach(item=>{   
  item.addEventListener("click", function(){                  
      let checkBoxes = document.querySelectorAll('.otherCheckbox:checked');
      allCheckBox.checked = checkBoxes.length == otherCheckBoxes.length;
    })
});


allCheckBox.addEventListener("click", function(){
  otherCheckBoxes.forEach(item=> item.checked = allCheckBox.checked) 
})
<label htmlFor='all' class='check'>
    <input id='all' type="checkbox" class='checkInput mainCheckbox' />
    <span class='checkBox' />
    <span class='text'>Все</span>
</label>

<label htmlFor='first' class='check'>
    <input id='first' type="checkbox" class='checkInput otherCheckbox' />
    <span class='checkBox' />
    <span class='text'>1</span>
</label>

<label htmlFor='second' class='check'>
    <input id='second' type="checkbox" class='checkInput otherCheckbox' />
    <span class='checkBox' />
    <span class='text'>2</span>
</label>


<label htmlFor='third' class='check'>
    <input id='third' type="checkbox" class='checkInput otherCheckbox' />
    <span class='checkBox' />
    <span class='text'>3</span>
</label>


<label htmlFor='fourth' class='check'>
    <input id='fourth' type="checkbox" class='checkInput otherCheckbox' />
    <span class='checkBox' />
    <span class='text'>4</span>
</label>

→ Ссылка