Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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_Checkbox_Calculator - Fatal编程技术网

Javascript jQuery输入复选框选中冲突

Javascript jQuery输入复选框选中冲突,javascript,jquery,checkbox,calculator,Javascript,Jquery,Checkbox,Calculator,我在表格中选中的复选框发生了一些非常奇怪的事情。 我已经在一个表格中构建了一个发票计算器,您可以看到它,我的目的是,一旦我自动检查输入(Iva或Irpef),它们就不会计算在总金额中。 正如您在我链接的示例中所看到的,如果您选中Irpef输入复选框,它工作得很好,Irpef不在总数中计算。问题是,我的输入复选框IVA的情况不同,为什么?代码完全相同 当我试着让它们分开工作时,没关系,两者都很好,所以看起来它们不能一起工作,可能是吗?发生了什么事?在这个问题上我需要你的帮助 谢谢 以下是与问题相关

我在表格中选中的复选框发生了一些非常奇怪的事情。 我已经在一个表格中构建了一个发票计算器,您可以看到它,我的目的是,一旦我自动检查输入(Iva或Irpef),它们就不会计算在总金额中。 正如您在我链接的示例中所看到的,如果您选中Irpef输入复选框,它工作得很好,Irpef不在总数中计算。问题是,我的输入复选框IVA的情况不同,为什么?代码完全相同

当我试着让它们分开工作时,没关系,两者都很好,所以看起来它们不能一起工作,可能是吗?发生了什么事?在这个问题上我需要你的帮助

谢谢

以下是与问题相关的代码:

function tally(selector) {
    var total = 0;
    $('p.editable_number').each(function() {
        total += parseInt($(this).text()) || 0;
        $('#subtotal').html(total);
        if($("#iva").is(':checked')){
            $('#subtotal').html((total).toFixed(2));
            $('#total').html((total*0.00).toFixed(2));
            $('#total1').html((total*0.15).toFixed(2));
            $('#total2').html((total*0.85).toFixed(2));
        }
        else {
            $('#subtotal').html((total).toFixed(2));
            $('#total').html((total*0.21).toFixed(2));
            $('#total1').html((total*0.15).toFixed(2));
            $('#total2').html((total*1.06).toFixed(2));
        }
         if($("#irpef").is(':checked')){
            $('#subtotal').html((total).toFixed(2));
            $('#total').html((total*0.21).toFixed(2));
            $('#total1').html((total*0.00).toFixed(2));
            $('#total2').html((total*1.21).toFixed(2));
        }
        else {
            $('#subtotal').html((total).toFixed(2))
            $('#total').html((total*0.21).toFixed(2));
            $('#total1').html((total*0.15).toFixed(2));
            $('#total2').html((total*1.06).toFixed(2));
        }
        })
        }

$('#irpef').change(function() {
             tally('p#subtotal');
             tally('p#total');
             }); 
$('#iva').change(function() {
             tally('p#subtotal');
             tally('p#total');
             }); 

试试这个,现在应该可以了。我想你试着做一个else-if,每件事都做几次而不是一次(每个函数)。 我添加了变量来跟踪总计/小计和vat/irpf。
each()
遍历所有p.editable\u number元素,因此您执行了几次相同的代码,每次都覆盖以前的结果,您得到了正确的结果,因为它是结束循环。现在,您只需获取一次值,然后计算相关小计、增值税、irpf和总值(基于是否检查增值税或irpf的条件)。

您的“irpef”if/else正在设置与“iva”if/else相同字段的值,从而覆盖刚刚设置的值。另外,如果要对用户输入的值使用
parseInt()
,则必须提供基数,否则如果用户输入前导零,则会出现错误的行为-因此,请使用
parseInt($(this).text(),10)
。您将选择器传递给Tall,但不在任何地方使用它??如果/else正在被覆盖,那么我如何避免覆盖?好吧,现在它可以工作了,但不像我在链接的示例中所说的,当我检查Irpef时,Irpef不会被计算,Irpef金额变为0。感谢实际上最好的解决方案是在开始时Irpef和IVA的金额为0,当我检查时,他们会得到值百分比,并计算总金额,包括IVA和/或Irpeft。我想这就是你想要的效果。太好了,这很简单,你可以做到,你在开始时再次使用else设置0到Irpef和Iva的值,单击后,他们得到要计算的百分比…谢谢你的帮助我认为你不需要tally函数的选择器参数,因为您没有在这段代码的任何地方使用它。很高兴能帮上忙!