Jquery 从输入中获取值,结果为NaN

Jquery 从输入中获取值,结果为NaN,jquery,Jquery,这很奇怪,我试图做一个简单的计算,但由于某种原因,我无法从输入中获得值,而且它只对特定的输入有效,而不是对所有人 这就是我试图获得价值的方式: var Days = parseInt($('#days').val()); var DaysPayment = parseInt($('#days-payment').val()); 但它不起作用,尽管其他输入工作正常 您可以在JSFIDLE上看到这一点:您需要从单击处理程序中的那些字段中检索值。当它们为空时,您正在加载它们,因此计算会产生NaN。此

这很奇怪,我试图做一个简单的计算,但由于某种原因,我无法从输入中获得值,而且它只对特定的输入有效,而不是对所有人

这就是我试图获得价值的方式:

var Days = parseInt($('#days').val());
var DaysPayment = parseInt($('#days-payment').val());
但它不起作用,尽管其他输入工作正常


您可以在JSFIDLE上看到这一点:

您需要从单击处理程序中的那些字段中检索值。当它们为空时,您正在加载它们,因此计算会产生
NaN
。此外,还应该在
parseInt
调用中包含基数。试试这个:

$(document).ready(function () {
    var $execute = $('#execute');
    var $total = $('#total');
    var $totalNDS = $('#total-nds');

    $execute.on('click', function () {
        var payment = parseInt($('#payment').val().replace(/ /g, ""), 10);
        var nds = parseInt($('#nds').val(), 10);
        var days = parseInt($('#days').val(), 10);
        var daysPayment = parseInt($('#days-payment').val(), 10);

        var t1 = payment / 100;
        var t2 = t1 * nds;
        var t3 = payment - t2;
        var t4 = t3 / days;
        var t5 = t4 * daysPayment;    
        $total.val(t5);
    });
});


我还更改了变量名,以使用常见的JS和jQuery约定(即,包含jQuery对象的变量的前缀为
$
,变量名应采用驼峰大小写)

您需要更改您的功能:

$(document).ready(function(){
    var Payment = parseInt($('#payment').val().replace(/ /g,""));

    var Execute = $('#execute');
    var Total = $('#total');
    var TotalNDS = $('#total-nds');

    Execute.on('click',function(){

        var NDS = 0
    var Days = 0
    var DaysPayment= 0
    if($('#nds') > 0)
     NDS = parseInt($('#nds').val());
    if($('#days') > 0)
     Days = parseInt($('#days').val());
    if($('#days-payment') > 0)
     DaysPayment = parseInt($('#days-payment').val());

        console.log(Days+' '+DaysPayment);
        var t1 = Payment/100;
        console.log(t1);        
        var t2 = t1 * NDS;
        console.log(t2);
        var t3 = Payment - t2;
        console.log(t3);
        var t4 = t3 / Days;
        console.log(t4);
        var t5 = t4 * DaysPayment;
        console.log(t5);

        Total.val(t5);


    });

});

因为您没有以天或月变量中的天为单位获得默认值,所以您得到的是NaN

我认为可能是您的替换函数的bcoz尝试此
replace(/\r?\n/g')