Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2016, 14:36
Новичок на форуме
Отправить личное сообщение для fatklass Посмотреть профиль Найти все сообщения от fatklass
 
Регистрация: 21.07.2016
Сообщений: 6

Собрать все одинаковые классы и атрибуты умножить и сложить
Добрый день,
есть таблица надо обойти все 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>
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2016, 14:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(".offer_container").each(function() {
    //здесь значения каждого обрабатывать
})
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2016, 14:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

fatklass,
http://api.jquery.com/each/
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2016, 15:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2016, 15:34
Новичок на форуме
Отправить личное сообщение для fatklass Посмотреть профиль Найти все сообщения от fatklass
 
Регистрация: 21.07.2016
Сообщений: 6

Сообщение от рони Посмотреть сообщение
fatklass,
http://api.jquery.com/each/
Спасибо, сделал так:
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);
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2016, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить все атрибуты всех инпутов shaltay jQuery 10 19.05.2017 15:07
Как получить все атрибуты html елемента imsha Events/DOM/Window 1 07.12.2011 12:42
Как удалить все одинаковые атрибуты с формы ? saturn Элементы интерфейса 1 12.10.2011 22:46
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37