добавление двух переменных вместе - PullRequest
3 голосов
/ 08 июня 2010

Я пытался в течение ... около 4 часов теперь IMAO.

currentCalc возвращает 50 currentSum возвращает 0, когда я их предупреждаю. Пока я не могу добавить их вместе с parseInt ????

что я делаю не так: '(

var identRow = $('tr.identRow');
identRow.each(function () {
    var getIdentClass = $(this).attr('class').split(' ').slice(1);
    $('tr.ohp' + getIdentClass + ' td.EURm').each(function (index) {
        var currentCalc = parseInt($(this).text().replace('.', ''), 10);
        var currentSum = $('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', '');
        total = parseInt(currentCalc, 10) + parseInt(currentSum, 10);
        $('tr.' + getIdentClass + ' td.totalEURm').text(total);
        if (index == 6) {
            alert(total);
        }
    });
});

EDIT:

О боже. Я сейчас совершенно сбит с толку. Я положил перерыв там. Всего сказано = 50.

Я хочу, чтобы каждая итерация добавлялась в итог. Вот почему я добавляю currentCalc к тексту поля, в которое вставляю currentCalc.

$('tr.' + getIdentClass + ' td.totalEURm').text(total);

с моим кодом теперь так:

    var identRow = $('tr.identRow');
    identRow.each(function () {
      var getIdentClass = $(this).attr('class').split(' ').slice(1);
      $('tr.ohp' + getIdentClass + ' td.EURm').each(
        function (index) {
          var currentCalc = parseInt($(this).text().replace('.', ''), 10) || 0;
          var currentSum  = parseInt($('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', ''), 10) || 0;
          var total = currentCalc + currentSum;
          $('tr.' + getIdentClass + ' td.totalEURm').text(total);
          if (index === 6) {
            alert(total);
          }
        });
    });

это предупреждает: 50, затем 0, затем 50, затем 0.

EDIT:

Как мне добавить currentCalc к его последнему значению?

Итак, первая итерация - 10, секунды - 20. Как сделать так, чтобы на 2-й итерации она равнялась 30. currentCalc ++ просто добавляет к ней 1.

Теперь ты понимаешь, какая я хрень :) 1026 *

Ответы [ 4 ]

1 голос
/ 08 июня 2010

Если вы получаете два предупреждения, это, вероятно, означает, что ваши внешние или внутренние операторы .each совпадают с двумя записями.

Если вы используете firebug, используйте console.debug (total);вместо оповещения ().Я рекомендую использовать console.debug (this) в какой-то момент, чтобы убедиться, что он тоже имеет то, что вы думаете.Поместите это выше предупреждения ().Эту информацию было бы полезно увидеть.

1 голос
/ 08 июня 2010

Я не эксперт в JS, но я видел, что currentCalc уже является int:

var currentCalc = parseInt($(this).text().replace('.',''), 10);
//...
total = parseInt(currentCalc, 10) + parseInt(currentSum, 10);

так что, вероятно, parseInt для int вместо строки не работает (?)

0 голосов
/ 08 июня 2010
    //SUM OF COLUMNS
    var total = 0;
    var identRow = $('tr.identRow');
    identRow.each(function () {
      var getIdentClass = $(this).attr('class').split(' ').slice(1);
      $('tr.ohp' + getIdentClass + ' td.EURm').each(
        function (index) {
            var currentCalc = $(this).text().replace('.', '');
            total = parseInt(currentCalc)+total;
            $('tr.' + getIdentClass + ' td.totalEURm').text(total);
        });
    });

сделал свое дело.

Теперь я просто должен установить общее значение 0, когда он попадает во вторую категорию, потому что в данный момент он продолжает прибавлять с того места, где остановился. Прогресс все же. Спасибо за все

0 голосов
/ 08 июня 2010

Я занимаюсь форматированием и очисткой кода, попробуйте:


var identRow = $('tr.identRow');
identRow.each(function () {
  var getIdentClass = $(this).attr('class').split(' ').slice(1);
  $('tr.ohp' + getIdentClass + ' td.EURm').each(
    function (index) {
      var currentCalc = parseInt($(this).text().replace('.', ''), 10) || 0;
      var currentSum  = parseInt($('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', ''), 10) || 0;
      var total = currentCalc + currentSum;
      $('tr.' + getIdentClass + ' td.totalEURm').text(total);
      if (index === 6) {
        alert(total);
      }
    });
});

Я добавил условие, если parseInt потерпит неудачу, переменные currentCalc и currentSum будут равны 0. Также, как и в ответе выше, я избегаю двойного parseInt

Можете ли вы привести пример html-страницы, чтобы попробовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...