Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 带有表和行输入的Jquery_Javascript_Jquery - Fatal编程技术网

Javascript 带有表和行输入的Jquery

Javascript 带有表和行输入的Jquery,javascript,jquery,Javascript,Jquery,我对下面的代码有问题, 我想对tr的所有输入值求和,除了它显示所有行上的行值,而不是更改的行上的行值之外,这一切都很好。 代码如下: $(".txtMult input").keyup(multInputs); function getNum($val) { if (isNaN($val)) { return 0; } else { return $val; } } function multInputs() {

我对下面的代码有问题, 我想对tr的所有输入值求和,除了它显示所有行上的行值,而不是更改的行上的行值之外,这一切都很好。 代码如下:

   $(".txtMult input").keyup(multInputs);

  function getNum($val) {
     if (isNaN($val)) {
       return 0;
     } else {
         return $val;
     }
  }
   function multInputs() {
       var mult = 0;
       var $total = 0;
       // for each row:
       $("tr.txtMult").each(function () {
           var $total = 0;
           $("input.val").each(function () {
           // get the values from this row:
           $total = +parseFloat($total)+getNum(parseFloat($(this).val()));
           });
           $('.multTotal',this).text($total);
       });
   }
有什么建议吗

JSfiddle上的示例

它显示所有行上的行值,而不是更改的行

我对该语句的理解是,您只想显示已更改或具有值的行的总数,然后只需添加if/else语句,如:

      function multInputs() {
           var mult = 0;
           // for each row:
           $("tr.txtMult").each(function () {
               // get the values from this row:
               var $val1 = $('.val1', this).val();
               var $val2 = $('.val2', this).val();
               var $total = ($val1 * 1) * ($val2 * 1)

               if ( $total != 0 && !isNaN($total) ) {
                   $('.multTotal',this).text($total);
                   mult += $total;
               } else $('.multTotal',this).text("");
           });
           $("#grandTotal").text(mult);
       }
这是小提琴:

我还添加了一个条件,仅显示有效数字-!伊斯南:总计$

更新:

关于此小提琴的最新更新:

错误出现在$input.val中,您在所有TR上选择了类为val的所有输入

您应该使用$this.findinput.val指定您只需要循环中当前tr上的input.val

$("tr.txtMult").each(function () {
      var $total = 0;
     $(this).find("input.val").each(function () {
         // get the values from this row:
         $total = +parseFloat($total)+getNum(parseFloat($(this).val()));
     });
     $('.multTotal',this).text($total);
});

小提琴手:

你的桌子看起来像我期望的那样工作。你能再解释一下到底是什么问题吗?你的JSFIDLE代码似乎工作得很好。所以我无法理解你的问题。请解释一下。您希望乘法发生在更改的行上,但要得到总计,您必须遍历每一行并计算它。所以,您当前的解决方案并没有那么糟糕。可能您想要我们期望的其他东西,您应该解释更多关于这一部分的内容。抱歉,伙计们,错误的JSFIDLE代码,我已经更新了url:thx或帮助,这在单独运行时效果非常好,但当我将其放入数据表时,它无法100%工作,它做的每件事都是正确的,即使加上值和总数也是正确的,但我无法将其写入span类,没有错误,没有任何错误。很奇怪。当我向multirow发出警报时,我得到的是object。有什么建议吗?