【问题标题】:Why are my number .val()'s getting turned into strings?为什么我的号码 .val() 变成了字符串?
【发布时间】:2015-02-20 02:07:11
【问题描述】:

我正在尝试为自己构建一个财务计算器,并且一切似乎都在工作(控制台中没有错误),除了它正在提取所有 .val() 数据并转换为字符串这一事实。我认为 .val() 将值作为输入中表示的原语提取?如何将数据转换为整数? (哦,别担心我仍在努力的日期。

var financeCalc = function(e) {
    e.preventDefault();

//find date 
    var dateData = new Date();
    var month = dateData.getMonth()+1;
    var year = dateData.getFullYear();
    var date = year + "-" + month;
    var endDate = $('.endDate').val();
    var monthsLeft = endDate - date;

//monthly expenses
    var rent = $('.rent').val();
    var cable = $('.cable').val();
    var gas = $('.gas').val();
    var costcoBill = $('.costco').val();
    var kingSupersBill = $('.supers').val();

//CREDIT CARDS
    //wells fargo
    var wfCredit = 6000.00;
    var wfSpent = $('.wfSpent').val();

    //citi
    var citiCredit = 1000.00;
    var citiSpent = $('.citiSpent').val();

    //american express
    var amexCredit = 2000.00;
    var amexSpent = $('.amexSpent').val();

    //trek
    var trekCredit = 4000.00;
    var trekSpent = $('.trekSpent').val();

    //capital one buypower
    var buyPowerCredit = 2500.00;
    var buyPowerSpent = $('.buyPowerSpent').val();

    //chase freedom
    var chaseFreedomCredit = 2000.00;
    var chaseFreedomSpent = $('.chaseFreedomSpent').val();

    //discover
    var discoverCredit = 2500.00;
    var discoverSpent = $('.discoverSpent').val();

    //amazon
    var amazonCredit = 2500.00;
    var amazonSpent = $('.amazonSpent').val();

    //tuition
    var springTuition = $('.springTuition').val();
    var summerTuition = $('.summerTuition').val();

    //other expenses
    var otherExpenses = $('.otherExpenses').val();
    var emergencyExpenses = $('.emergencyExpenses').val();

//MONEY BROUGHT IN
    var madePay = $('.madePay').val();
    var otherIncome = $('.otherIncome').val();



//money available
    var savingsTotal = $('.wfTotal').val();
    var wfAvail = wfCredit - wfSpent;
    var buyPowerAvail = buyPowerCredit - buyPowerSpent;
    var citiAvail = citiCredit - citiSpent;
    var chaseFreedomAvail = chaseFreedomCredit - chaseFreedomSpent;
    var discoverAvail = discoverCredit - discoverSpent;
    var amazonAvail = amazonCredit - amazonSpent;




//CALCULATOR
    //credit owed
    var creditDue = wfSpent + citiSpent + trekSpent + buyPowerSpent + chaseFreedomSpent + discoverSpent + amazonSpent;
    console.log("Credit Due: " + creditDue);

    //total available
    var totalAvail = savingsTotal + wfAvail + buyPowerAvail + citiAvail + chaseFreedomAvail + discoverAvail + amazonAvail;
    console.log("Total Available: " + totalAvail);  

    //total due
    //var totalDue = (rent*monthsLeft) + (cable*monthsLeft) + (gas*monthsLeft) + (costcoBill*monthsLeft) + (kingSupersBill*monthsLeft) + springTuition + summerTuition + otherExpenses + emergencyExpenses;
    var totalDue = rent + cable + gas + costcoBill + kingSupersBill + springTuition + summerTuition + otherExpenses + emergencyExpenses;
    console.log("Total Due: " + totalDue);

    //total
    var total = totalAvail - totalDue;
    console.log("Total: " + totalDue);

    $('.totals__creditDue').html("Credit Due: " + creditDue);
    $('.totals__totalAvail').html("Total Available: " + totalAvail);
    $('.totals__totalDue').html("Total Due: " + totalDue);
    $('.totals__total').html("Total: " + total);

};

$(function(){
    $('.calculate').on('click', financeCalc);
});

【问题讨论】:

标签: javascript jquery math integer


【解决方案1】:

...它正在提取所有 .val() 数据并转换为字符串。一世 认为 .val() 将值作为表示在 输入?如何将数据转换为整数?

文本框值始终是文本。如果您希望它们是数字,则需要使用 parseIntparseFloat 解析它们。

jQuery.val() 实际上是在拉取输入中表示的“原始”,但是输入始终是文本,所以你会得到一个string

var rent = parseInt($('.rent').val());

var rent = parseFloat($('.rent').val());

...将string 转换为javascript number

由于您处理的是货币价值,您可能会想使用parseFloat。但是,当您使用 parseFloated 数字进行数学运算时,您可能会遇到一些奇怪的值。可能想看看这个以帮助您四舍五入到小数点后 2 位:

https://stackoverflow.com/a/1726662/304832

【讨论】:

  • 另外,请注意在没有 radix 参数的情况下使用 parseInt。如果您意外传递0x10,它将返回16,因为它看到0x 并假定为十六进制数。使用parseInt(x, 10) 几乎总是更好,这样您可以获得一致的结果。
  • 谢谢,伙计们帮了大忙!
猜你喜欢
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多