Javascript .val()问题

时间:2013-06-26 07:25:42

标签: javascript jquery

当我输入小数点机会时,它会返回NaN以获得支付和利润。知道为什么吗?我还需要做些什么来将利润四舍五入到第二位小数。

感谢。

    $(document).ready(function(){

        function updateValues() {
            // Grab all the value just incase they're needed.
            var chance = $('#chance').val();
            var bet = $('#bet').val();
            var pay = $('#pay').val();
            var profit = $('#profit').val();

            // Calculate the new payout.
            var remainder = 101 - chance;
            pay = Math.floor((992/(chance+0.5)) *100)/100;


            // Calculate the new profit.
            profit = bet*pay-bet;



            // Set the new input values.
            $('#chance').val(chance);
            $('#bet').val(bet);
            $('#pay').val(pay);
            $('#profit').val(profit);
        }


        $('#chance').keyup(updateValues);
        $('#bet').keyup(updateValues);
        $('#pay').keyup(updateValues);
        $('#profit').keyup(updateValues);


    });

3 个答案:

答案 0 :(得分:1)

您需要使用parseFloat来正确使用值,默认情况下这些值是字符串:

var chance = parseFloat($('#pay').val());
/*same for other values*/

要将利润四舍五入到2位小数,您可以在该数字上使用toFixed,再次将其转换回字符串。

3.123.toFixed(2) = "3.12"

答案 1 :(得分:1)

尝试使用parseFloat

var chance = parseFloat($("#Chance").val());

您还可以使用toFixed指定小数位数。

修改

您需要修改chance

chance = parseFloat(chance);

你可以在这里看到这个:

http://jsfiddle.net/U8bpX/

答案 2 :(得分:1)

首先使用parseFloat或(如果不需要浮点值,则使用parseInt)。

 function updateValues() {

        var chance = parseFloat($('#chance').val());
        var bet = parseFloat($('#bet').val());
        var pay = parseFloat($('#pay').val());
        var profit = parseFloat($('#profit').val());

        // Calculate the new payout.
        var remainder = 101 - chance;
        pay = Math.floor((992/(chance+0.5)) *100)/100;


    }
  

Also what would I need to do to round profit to the second decimal.

you can do this:
              profit = bet*pay-bet;
              profit = profit.toFixed(2);