Javascript.RU

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

Подсчитать суму в ячейках таблицы по каждой подгрупе
http://jsfiddle.net/j4n87xvy/7/
Как просуммировать столбцы.
В Area сумма всех Value
В V1 сумма всех Area
В Сity_1_district сумма всех V
И так до самого верха

Последний раз редактировалось noomad, 11.11.2014 в 15:51.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2014, 15:35
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

noomad,
Вопрос в том как посчитать сумму ячеек или как решить вашу задачу?

Если первое, то могу показать.

Если второе, то вы просите готовый скрипт с нуля и делайте сами свой эксель.

Если интересен алгоритм решения могу кинуть идею.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2014, 15:41
Новичок на форуме
Отправить личное сообщение для noomad Посмотреть профиль Найти все сообщения от noomad
 
Регистрация: 11.11.2014
Сообщений: 3

Буду рад любому конструктивному ответу. Написать скрипт с нуля точно под мою задачу не прошу.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2014, 16:03
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

noomad,
ок. Посчитать сумму данных в столбце можно например так:

<table>

<tr>
  <td>Сумма</td>
  <td></td>
</tr>

<tr>
  <td>Кастрюли</td>
  <td>10</td>
</tr>

<tr>
  <td>Ящики</td>
  <td>2</td>
</tr>

<tr>
  <td>Тигры</td>
  <td>12</td>
</tr>

</table>

<script>

var lines = document.querySelectorAll("tr"), summ = 0;
for (var i = 1; i < lines.length; i++) {
  summ += parseInt(lines[i].querySelectorAll("td")[1].innerHTML);
}
lines[0].querySelectorAll("td")[1].innerHTML = summ;

</script>



Теперь по алгоритму. Тут уже сложнее. Ну для начала вам надо получить строки таблицы (это уже описано выше). Затем я бы шел по строкам снизу вверх (то есть от i = lines.length-1) и считал сумму всех value. Как только мы встретили первый не value мы записываем в него сумму, обнуляем и идем дальше пока не кончатся все value. Потом заново идем по всем строкам (или в первом проходе заодно фильтруем и убираем отсуммированные строки) и считаем следующий по иерархии элемент. И так доконца. Я бы посоветовал расставить более вразумительные классы или атрибуты чтобы было проще понимать когда надо переходить к следующей группе подсчетов/на следующий круг. Надеюсь понятно написал.

Последний раз редактировалось tsigel, 11.11.2014 в 16:09.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2014, 16:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от tsigel
Потом заново идем по всем строкам
Вот это уже зря...
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2014, 21:56
Новичок на форуме
Отправить личное сообщение для noomad Посмотреть профиль Найти все сообщения от noomad
 
Регистрация: 11.11.2014
Сообщений: 3

tsigel большое спасибо за пример и алгоритм я даже не знал как к этому подойти. Вот мое решение
function count_group_value (){
      var tr = $("#work_report tr:visible");
      var td = tr[1].querySelectorAll("td");
      var sum = 0;
      for (var depth = 5; depth >= 0; depth-- ) {
        for (var j = 1; j < td.length; j++ ) {
          for (var i = tr.length - 1; i >= 0; i--) {
            if ($(tr[i]).hasClass('depth_' + depth)) {
              sum += parseInt(tr[i].querySelectorAll("td")[j].innerHTML) || 0;
            }
            if ($(tr[i]).hasClass('depth_'+ (depth-1))) {
              tr[i].querySelectorAll("td")[j].innerHTML = sum;
              sum = 0;
            }
          }
        }
      }
    }
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать onclick на ячейках таблицы krokusandr Events/DOM/Window 15 12.04.2019 05:30
Динамическое изменение background-a в ячейках таблицы Gh0stik Events/DOM/Window 15 02.08.2012 19:40
Вывод значения каждой 10 строки таблицы nik_neman jQuery 3 16.02.2012 18:50