Javascript 为什么当我更改或尝试添加另一类输入时,total sum停止工作?

Javascript 为什么当我更改或尝试添加另一类输入时,total sum停止工作?,javascript,jquery,Javascript,Jquery,如果我尝试将输入类更改为其他类型,那么val1或val2将停止工作?你知道为什么吗 我想更改第一个和第三个字段,并添加一个if语句,如 if ( $val1 <= 20 ) { $total = 0 } else { $total =$val1 * 1 ) * ($val2 * 1)-10);} if($val1首先,让我们讨论命名约定 对于jQuery,元素名称通常以“$”作为前缀,如下所示: var $val1 = $('.val1'); 其中,作为值,不应以相同的前缀开头 var

如果我尝试将输入类更改为其他类型,那么val1或val2将停止工作?你知道为什么吗

我想更改第一个和第三个字段,并添加一个if语句,如

if ( $val1 <= 20 ) { $total = 0 } else { $total =$val1 * 1 ) * ($val2 * 1)-10);}

if($val1首先,让我们讨论命名约定

对于jQuery,元素名称通常以“$”作为前缀,如下所示:

var $val1 = $('.val1');
其中,作为值,不应以相同的前缀开头

var val1 = $('.val1').val();
我提出这一点的原因是,是的,你可以随意命名,但对于其他人来说,阅读和理解你的代码,遵循约定会更容易

接下来,如果要对该值进行操作,则应将其转换为数值。因此,上面的最后一条语句应为:

var val1 = parseFloat($('.val1').val() || 0);
|| 0
将值中的空字符串转换为零

现在,可以使用a来处理所需的值:

var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;
我可能不了解您试图满足的所有要求,但请在此处尝试此演示:


$(文档).ready(函数(){
$(“.calcrow输入”).keyup(多输入);
函数多输出(){
var-mult=0;
//对于每行:
$(“.calcrow”)。每个(函数(){
//从此行获取值:
var val1=parseFloat($('.val1',this.val()| | 0);
var val2=parseFloat($('.val2',this.val()| | 0);
var sm8=parseFloat($('.sm8',this.val()| | 0);
var vu=parseFloat($('.vu',this.val()| | 0);
var总计=(val1*1)*(val2*1);

var sm8T=sm8这是一个无效的HTML结构,因此它永远不会工作。
是错误的。创建一个链接,否则问题就结束了。我添加了一个链接来显示示例好吧……但是HTML是错误的。所以它不工作。代码中的输入和行类在哪里被更改了?感谢莫蒂花时间解释了一些事情,非常感谢Eded.是否可以将三元运算符应用于选定的输出?正如您所示,我只想为输出1创建一个,我想为输出3创建另一个,并保持2和3不变?感谢您的帮助,我能够找到原因,但这一行的.tofixed$(“#grandTotal”).text(mult.tofixed(2));在chrome上不起作用。php:85未捕获类型错误:total.toFixed不是一个函数
var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;
$(document).ready(function () {
  $(".calcrow  input").keyup(multInputs);

  function multInputs() {
    var mult = 0;
    // for each row:
    $(".calcrow ").each(function () {
      // get the values from this row:
      var val1 = parseFloat($('.val1', this).val() || 0);
      var val2 = parseFloat($('.val2', this).val() || 0);
      var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;

      $('.multTotal, .sm8',this).text(total.toFixed(2));
      mult += total;
    });
    $("#grandTotal").text(mult.toFixed(2));
  }

});
 <script>   
     $(document).ready(function () {
       $(".calcrow  input").keyup(multInputs);

       function multInputs() {
           var mult = 0;
           // for each row:
           $(".calcrow ").each(function () {
               // get the values from this row:
               var val1 = parseFloat($('.val1', this).val() || 0);
               var val2 = parseFloat($('.val2', this).val() || 0);
               var sm8 = parseFloat($('.sm8', this).val() || 0);     
               var vu = parseFloat($('.vu', this).val() || 0);     

                var total =  (val1 * 1) * (val2 * 1);

                var sm8T = sm8 <= 20 ? 0 : (sm8 * 1) * (val2 * 1)-10;     
                var vuT= vu <= 2 ? 0 : (vu * 1) * (val2 * 1)-40;

                $('.vuT',this).text(vuT);                                
               $('.sm8T',this).text(sm8T);
                $('.multTotal',this).text(total.toFixed(2));

               mult += sm8T+vuT+total;
           });
           $("#grandTotal").text(mult.toFixed(2));
       }

  });

  </script>