Собрать все одинаковые классы и атрибуты умножить и сложить
Добрый день,
есть таблица надо обойти все 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, время: 12:46. |