Вывести сумму атрибутов элемента
Здравствуйте, помогите пожалуйста, есть список чекбоксов:
<input type="checkbox" value="12321" name="vote" test="0.2"> <input type="checkbox" value="12321" name="vote" test="1.2"> <input type="checkbox" value="12321" name="vote" test="3"> Подскажите как вывести сумму чисел из атрибута test у выбранных чекбоксов т.е если пользователь выберет все эти три чекбокса то должно вывести 4.4 Спасибо |
mrmen2,
а почему нужен дополнительный атрибут а не стандартное value? |
Цитата:
|
mrmen2,
:cray: пройти циклом проверить checked суммировать данные ...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<input type="checkbox" value="12321" name="vote" test="0.2">
<input type="checkbox" value="12321" name="vote" test="1.2">
<input type="checkbox" value="12321" name="vote" test="3">
<script>
var votes = document.querySelectorAll('[name="vote"]');
function s() {
var sum = [].reduce.call(document.querySelectorAll(":checked"), function(a, b) {
a += +b.getAttribute("test");
return a
}, 0);
alert(sum)
}
for (var i = 0; i < votes.length; i++) votes[i].onchange = s;
</script>
</body>
</html>
|
рони, не для продакшна. Вместо поиска по DOM, лучше тестить checked. И почему onclick, а не onchange?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<input type="checkbox" value="12321" name="vote" data-price="0.2">
<input type="checkbox" value="12321" name="vote" data-price="1.2">
<input type="checkbox" value="12321" name="vote" data-price="3">
<script>
(function(){
var votes = document.getElementsByName('vote');
function recalc() {
var sum = 0;
for (var i = 0; i < votes.length; i++)
sum += votes[i].checked ? +votes[i].getAttribute('data-price') : 0;
alert(sum);
}
for (var i = 0; i < votes.length; i++)
votes[i].onchange = recalc;
})();
</script>
</body>
</html>
|
Цитата:
|
Цитата:
|
Цитата:
|
Ок. Я по табу перешел на чекбокс и нажал на пробел. Произошло событие click. Это логично?
|
danik.js,
благодарю за желание помочь, но видимо моих знаний не хватает понять - считаю что click на 2% надёжнее чем change для checkbox - для формы надёжнее change, поэтому пишу так. |
| Часовой пояс GMT +3, время: 12:42. |