将两个变量加在一起

时间:2010-06-07 21:07:15

标签: javascript jquery math

我一直在努力...现在约4个小时lmao。

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);
        }
    });
});

编辑:

哦,善良。我现在完全糊涂了。我在那里休息。它说总数= 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。

编辑:

如何将currentCalc添加到其上一个值?

所以第一次迭代10次,秒20次。我如何在第二次迭代时使它等于30. currentCalc ++只是加1。

现在你明白了我的废话:)

4 个答案:

答案 0 :(得分:1)

我不是JS的专家,但我看到currentCalc已经是一个int:

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

所以很可能是int上的parseInt而不是字符串上的失败(?)

答案 1 :(得分:1)

如果您收到两个警报,则可能意味着您的外部或内部.each语句匹配两个条目。

如果您使用的是firebug,请使用console.debug(total);而不是alert()。我建议在某些时候使用console.debug(this)来确保它具有你认为它具有的功能。把它放在alert()上面。这些信息对我们来说很有用。

答案 2 :(得分: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 = 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页面试试吗?

答案 3 :(得分:0)

    //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,当它到达第二类时,因为此时它一直在从它停止的位置添加。虽然进步。谢谢你的一切