Вывести сумму атрибутов элемента
Здравствуйте, помогите пожалуйста, есть список чекбоксов:
<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, поэтому пишу так. |
рони, если бы отключенный чекбокс реагировал на клики, то какой был бы смысл слушать все клики подряд?
Нам по сути что нужно? Реагировать на смену состояния чекбокса юзером, так? Ну так это событие change, разве нет? |
danik.js,
а разве с disabled клик сработает? |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
рони, почему вообще при нажатии на пробел возникает событие click? Тебя это не смущает? Видимо ты в курсе почему так?
|
danik.js,
не знаю, не смущает, раз работает этим пользуюсь - ранее change без формы в некоторых случаях не работал, с кастомизацией тоже были проблемы, оставил клик как более надёжный метод, если бывает нужен change пишу change, click или change непринципиально. сменил в 4 посте, поставил change |
Цитата:
|
Цитата:
|
Цитата:
|
danik.js,
ок. ie версии 11 года и ниже |
Часовой пояс GMT +3, время: 12:22. |