function update() {
var checked = 0;
var myBar = document.getElementById("myBar");
//Reference the Form.
var fruits = document.getElementById("fruits");
//Reference all the CheckBoxes in Table.
var chks = fruits.getElementsByTagName("INPUT");
//Loop and count the number of checked CheckBoxes.
for (var i = 0; i < chks.length; i++) {
if (chks[i].checked) {
checked++;
}
}
if (checked > 0) {
alert(((checked / 5) * 100) + " % of CheckBoxe(s) are checked.");
return true;
} else {
alert("Please select CheckBoxe(s).");
return false;
}
}
h1 {
text-align: center;
}
#myProgress {
margin: auto;
width: 50%;
background-color: black;
}
#myBar {
width: 0%;
height: 30px;
background-color: green;
}
.buttonHold {
text-align: center;
}
<html>
<head>
<link rel = "stylesheet" href = "style/pogbar.css">
<script src = "java/progress.js"></script>
</head>
<body>
<div id = "myProgress">
<div id = "myBar"></div>
</div>
<br>
<div class = "buttonHold">
<input type = "button" value = "Update" onclick = "update()" />
</div>
<form id = "fruits">
<input id = "chkMango" type = "checkbox" value = "1"/><label for = "chkMango">Mango</label>
<input id = "chkApple" type = "checkbox" value = "2"/><label for = "chkApple">Apple</label>
<input id = "chkBanana" type = "checkbox" value = "3"/><label for = "chkBanana">Banana</label>
<input id = "chkGuava" type = "checkbox" value = "4"/><label for = "chkGuava">Guava</label>
<input id = "chkOrange" type = "checkbox" value = "5"/><label for = "chkOrange">Orange</label>
</form>
</body>
</html>
Я создаю веб-сайт и хочу включить флажки и индикатор выполнения, используя css и javascript. Я все еще новичок и ищу помощи. Я хочу использовать чистый javascript для обновления индикатора выполнения в зависимости от того, сколько флажков установлено. Я могу получить код, чтобы предупредить меня
<https://jsfiddle.net/Knibber4/wyv2sr0q/3/>
Но я не могу понять, как получить код для обновления/заполнения индикатора выполнения. Любая помощь будет оценена по достоинству!
Вместо предупреждения вы просто используете myBar.style.width = ((checked / 5) * 100) + "%";
Также вместо цикла вы можете просто получить длину в querySelectorAll
function update() {
var checked = 0;
var myBar = document.getElementById("myBar");
//Reference the Form.
var fruits = document.getElementById("fruits");
//Reference all the CheckBoxes in Table.
boxes = fruits.querySelectorAll("input[type='checkbox']:checked");
checked = boxes.length
myBar.style.width = ((checked / 5) * 100) + "%";
if (checked == 0) {
alert("Please select CheckBoxe(s).");
}
return true;
}
checks = document.querySelectorAll("input[type='checkbox']");
checks.forEach(function(box) {
box.addEventListener("change", function(e) {
update()
});
});
h1 {
text-align: center;
}
#myProgress {
margin: auto;
width: 50%;
background-color: black;
}
#myBar {
width: 0%;
height: 30px;
background-color: green;
}
.buttonHold {
text-align: center;
}
<html>
<head>
<link rel = "stylesheet" href = "style/pogbar.css">
<script src = "java/progress.js"></script>
</head>
<body>
<div id = "myProgress">
<div id = "myBar"></div>
</div>
<br>
<div class = "buttonHold">
<input type = "button" value = "Update" onclick = "update()" />
</div>
<form id = "fruits">
<input id = "chkMango" type = "checkbox" value = "1" /><label for = "chkMango">Mango</label>
<input id = "chkApple" type = "checkbox" value = "2" /><label for = "chkApple">Apple</label>
<input id = "chkBanana" type = "checkbox" value = "3" /><label for = "chkBanana">Banana</label>
<input id = "chkGuava" type = "checkbox" value = "4" /><label for = "chkGuava">Guava</label>
<input id = "chkOrange" type = "checkbox" value = "5" /><label for = "chkOrange">Orange</label>
</form>
</body>
</html>
@Zak Я обновил перед вашим ответом, чтобы включить обработчик событий change
вместо встроенного клика.
Чтобы сделать его немного более интуитивным .. Всегда можно добавить
onclick = "update();"
ко всем флажкам - тогда нет необходимости в кнопке обновления.