I have just started learning JavaScript, I am trying to solve my problem, I have those group of checkboxes, my aim is to check all checkboxes and log checkboxes data attribute values, which works in my code, but problem is, When I want to uncheck all of them an clear loged data, or just uncheck one of them and delete this data from checkedItems array, the data is added to the existing checkedItems array. thanks in advance
var checkedItems = [];
function check() {
var checkboxes = document.querySelectorAll('.checkboxes');
for (var i = 0; i < checkboxes.length; i++) {
checkboxes[i].checked = false;
if (checkboxes[i].type == "checkbox") {
if (!checkboxes[i].checked) {
checkboxes[i].checked = true;
checkedItems.push(checkboxes[i].getAttribute('data-value'));
} else {
checkboxes[i].checked = false;
checkedItems = [];
}
}
}
console.log(checkedItems)
}
function checkSingle(e) {
checkedItems.push(e.target.getAttribute('data-value'))
console.log(checkedItems)
}
<input type="checkbox" id="checkAll" onchange="check()">
<label for="vehicle1"> check all</label><br>
<input type="checkbox" id="vehicle1" class="checkboxes" onchange="checkSingle(event)" name="vehicle1" value="Bike" data-value="50">
<label for="vehicle1"> I have a bike</label><br>
<input type="checkbox" id="vehicle2" name="vehicle2" class="checkboxes" value="Car" onchange="checkSingle(event)" data-value="60">
<label for="vehicle2"> I have a car</label><br>
<input type="checkbox" id="vehicle3" class="checkboxes" name="vehicle3" onchange="checkSingle(event)" value="Boat" data-value="60">
<label for="vehicle3"> I have a boat</label><br>