Собрать все одинаковые классы и атрибуты умножить и сложить
Добрый день,
есть таблица надо обойти все tr c class="offer_container" каждый атрибут data-wanted_wood="150" умножить на data-count="2" затем наверное записать в массив и массив сложить. Как то так должно получиться: ((150*2)+(0*1)+(150*1))=450 Например я вот получаю значения первого offer_container умножаю атрибуты получаю результат, а как теперь пройтись циклом по всем остальным и получить сумму всех? wood = $(".offer_container").attr('data-wanted_wood'); woodcount = $(".offer_container").attr('data-count'); result = wood*woodcount; console.log(result); Помогите пожалуйста. <table class="vis" id="own_offers_table"> <tr class="offer_container " id="offer_49051" data-id="49051" data-count="2" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"> <tr class="offer_container " id="offer_49052" data-id="49052" data-count="1" data-wanted_wood="0" data-wanted_stone="150" data-wanted_iron="0"> <tr class="offer_container " id="offer_49053" data-id="49053" data-count="1" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"> </table> |
$(".offer_container").each(function() { //здесь значения каждого обрабатывать }) |
fatklass,
http://api.jquery.com/each/ |
fatklass,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <table class="vis" id="own_offers_table"> <tr class="offer_container " id="offer_49051" data-id="49051" data-count="2" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"></tr> <tr class="offer_container " id="offer_49052" data-id="49052" data-count="1" data-wanted_wood="0" data-wanted_stone="150" data-wanted_iron="0"></tr> <tr class="offer_container " id="offer_49053" data-id="49053" data-count="1" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"></tr> </table> <script> window.addEventListener('DOMContentLoaded', function() { var nodes = document.querySelectorAll('.offer_container'), sum = [].reduce.call( nodes, function(sum, tr) { return sum += tr.dataset.count * tr.dataset.wanted_wood },0); alert(sum) }); </script> </body> </html> |
Цитата:
var values = new Array(); $(".offer_container").each(function() { values.push($(this).attr('data-wanted_wood')*$(this).attr('data-count')); }); var sum=0; for(var i=0;i<values.length;i++){ sum = sum + parseInt(values[i]); } console.log(sum); |
fatklass,
для атрибута data-... в jquery есть метод data(); parseInt не нужен , у вас было умножение ранее, второй цикл избыточен. <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { var sum = 0; $(".offer_container").each(function() { var data = $(this).data() sum += data.wanted_wood * data.count; }); alert(sum) }); </script> </head> <body> <table class="vis" id="own_offers_table"> <tr class="offer_container " id="offer_49051" data-id="49051" data-count="2" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"></tr> <tr class="offer_container " id="offer_49052" data-id="49052" data-count="1" data-wanted_wood="0" data-wanted_stone="150" data-wanted_iron="0"></tr> <tr class="offer_container " id="offer_49053" data-id="49053" data-count="1" data-wanted_wood="150" data-wanted_stone="0" data-wanted_iron="0"></tr> </table> </body> </html> |
Часовой пояс GMT +3, время: 11:53. |