Получить значение из входных данных, результат как NaN

#jquery

#jquery

Вопрос:

Это странно, я пытаюсь выполнить простое вычисление, но по какой-то причине я не могу получить значение из входных данных, и это работает только для определенных входных данных, а не для всех.

Именно так я пытаюсь получить значение:

 var Days = parseInt($('#days').val());
var DaysPayment = parseInt($('#days-payment').val());
  

Но это не работает, хотя другие входные данные работают нормально.

Вы можете увидеть это на JSFiddle здесь: http://jsfiddle.net/jEU4L /

Комментарии:

1. я думаю, что это может быть bcoz функции замены ur попробуйте это replace(/r?n/g, '')

Ответ №1:

Вам необходимо извлечь значения из этих полей в обработчике кликов. На данный момент вы получаете их при загрузке, когда они пустые, следовательно, результаты вычислений 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, имеют префикс a $ , а имена переменных должны быть в верблюжьем регистре).

Ответ №2:

Вам нужно изменить свою функцию :

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