Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将两个变量相加_Javascript_Jquery_Math - Fatal编程技术网

Javascript 将两个变量相加

Javascript 将两个变量相加,javascript,jquery,math,Javascript,Jquery,Math,我一直在努力。。。现在大约4个小时了 currentCalc返回50 当我提醒他们时,currentSum返回0。但我无法将它们与parseInt一起添加 “我做错了什么?”( 编辑: 哦,天哪。我现在完全糊涂了。我把断点放在那里了。上面写着总数=50 我希望每次迭代都将自己添加到总数中。这就是为什么我将currentCalc添加到当前Calc映射到的字段的文本中 $('tr.' + getIdentClass + ' td.totalEURm').text(total); 现在我的代码是这样

我一直在努力。。。现在大约4个小时了

currentCalc返回50 当我提醒他们时,currentSum返回0。但我无法将它们与parseInt一起添加

“我做错了什么?”(

编辑:

哦,天哪。我现在完全糊涂了。我把断点放在那里了。上面写着总数=50

我希望每次迭代都将自己添加到总数中。这就是为什么我将currentCalc添加到当前Calc映射到的字段的文本中

$('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


现在你明白我有多糟糕了:)

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

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

因此,可能是int上的parseInt而不是字符串上的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) || 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失败,则vars currentCalc和currentSum将为0。 另外,就像上面的回答一样,我在避免使用双parseInt


你能给出一个html页面的示例来试用吗?

如果你收到两个警报,这可能意味着你的外部或内部。每个语句都匹配两个条目

如果您使用的是firebug,请使用console.debug(总计);而不是alert()。我建议在某个时候使用console.debug(this),以确保它也具有您认为的功能。将其置于警报()上方。这些信息将是有用的

    //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,因为现在它从停止的地方开始不断增加。尽管有进步。感谢您所做的一切,您能更详细地解释一下您遇到的错误吗?var currentCalc=parseInt($(this).text().replace('.','')返回50 var currentSum=$('tr.+getIdentClass+'td.totalEURm',this).text().replace('.','');返回0.total=parseInt(currentCalc,10)+parseInt(currentSum,10);假定返回50,因为50+0是50。但它返回Nan。根据浏览器的不同,使用firebug/dev工具,在total=行上放置一个断点,并查看currentCalc和currentSum的当前值。确保它们都是预期值。要保持currentCalc更新,请在内部定义currentCalc。在内部定义currentCalc只需更新currentCalc doing currentCalc+=parseInt(…)这更像是一种协作工作。保持这种方式。我刚刚更改了它,因此它现在没有parseInt。它仍然返回Nan。我无法将文本“50”和“0”转换为数字。我唯一能够通过传递字符串“O”(大写字母O)而不是“0”来获得Nan si的方法零。检查你的源代码中是否没有大写字母O而不是零。为建议干杯,但它实际上是0和50。事实上,我从警报中复制了它们只是为了确保。它们来自你看到的数据库,但正在转换为文本,这就是为什么我再次需要它们的数字来进行标记。这很奇怪。我可以d不以任何其他方式生成NaN:)这可能是浏览器的问题吗?您是否在其他浏览器中尝试过,只是为了确定?为持续的帮助干杯。如果你按照我最初的问题的评论去做,我们正在取得进展。。还有其他想法吗?好吧,很不幸,它都被锁起来了,所以我不能真的,如果我给你看的话,我肯定会有麻烦的。谢谢你对代码的修改。基本上。。当我向total发出警报时,会收到两个警报。第一个警告“50”。第二个警报为“0”。当然,我希望总数达到50。因为50+0等于50。希望这会有所帮助。可能您会收到两个警报,因为它们来自两个不同的iTreaction:您分别嵌套了两个,因此如果有多个tr.identRow,则每个警报上都将执行第二个。每个代码。可能第一行正常,输出50,而第二行输出0I在写入tbh时被混淆。我有两类数据。它们在一个表中表示,该表已全部分类。我的第一个each循环将获取identRow的所有迭代。只有2个,因此它应该迭代两次。然后它从该对象获取第二个类名,这样它就知道这个类别中的数据属于这个类别,而下一个类别中的数据属于下一个类别。然后我有两个专栏。它应该遍历第一个类别,并将所有数据(数字)和输出添加到该类别列中。然后进入下一个类别等。
    //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);
        });
    });