【问题标题】:Why am I getting $NaN on this page?为什么我在此页面上收到 $NaN?
【发布时间】:2012-08-12 23:38:54
【问题描述】:

我不断得到 $NaN 而不是数字。 (代码从line 155 开始。)我怎样才能得到一个数字输出而不是$NaN。有没有更好的方法来调试它以确定返回的究竟是什么?

function daysInMonth(y, m) {
  var t = new Date(y, m, 0);
  return t.getDate();
}
function daysLeftInQuater(d) {
  d = d || new Date(); // If no date supplied, use today
  var t = new Date(d); // Don't mess up supplied date if there was one
  var daysLeft = 2 - (t.getMonth() % 3);

  do {
    daysLeft += daysInMonth(t.getFullYear(), t.getMonth() + 1) - t.getDate();
    t.setMonth(t.getMonth() + 1);
    t.setDate(1);
  } while (t.getMonth() % 3)

  return daysLeft;      
}
function getQuarter(d) {
  d = d || new Date();
  var m = Math.floor(d.getMonth()/3) + 2;
  return m > 4? m - 5 : m;
}
function hoa_letsgo(){
var amt_due = $("#user_ad").val();
var qma_val = $("#qma_select").val();
if (qma_val == 1){//Q
var cur_year = $("#year").val(); var cur_day = $("#day").val();
var cur_month = $("#month").val(); var now = new Date(cur_month, cur_day, cur_year);
var days_left = daysLeftInQuater(cur_month);
var ind_amt = amt_due / 4;
var day_amt = amt_due / 360;
var quarter = getQuarter(now);
var am_cred = ind_amt * quarter;
var final_cred = am_cred + (day_amt * days_left);
final_cred = final_cred - amt_due;
final_cred = final_cred.toFixed(2)
$("#credit").html("$" + addCommas(final_cred));
}

【问题讨论】:

  • 你能把范围缩小一点,在这里贴一些代码吗?
  • 您在这里提出的问题可能不会得到任何好的答复。将一些相关代码移动到问题中,并尝试提出一个更重要的问题。你试过什么?您为什么希望它起作用?

标签: javascript jquery math numbers nan


【解决方案1】:

从文本框中拉出一个值会给你一个字符串。您不能使用字符串执行某些算术函数,因为运算符被重载以执行不同的操作。例如,如果任一操作数是字符串,则加法运算符+ 将执行字符串连接。

使用parseInt(..., 10);parseFloat(..., 10); 包装您所有的.val() 调用,它应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2020-02-24
    • 2013-12-09
    • 2018-08-24
    相关资源
    最近更新 更多