Вывести сумму атрибутов элемента
Здравствуйте, помогите пожалуйста, есть список чекбоксов:
<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, время: 05:08. |