-2

数値の代わりに $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));
}
4

1 に答える 1

1

テキストボックスから値を引き出すと、文字列が得られます。演算子が別の操作を実行するためにオーバーロードされているため、文字列で一部の算術関数を実行できません。たとえば、+いずれかのオペランドが文字列の場合、加算演算子は文字列連結を実行します。

.val()すべての呼び出しをparseInt(..., 10);orでラップするparseFloat(..., 10);と、問題が解決するはずです。

于 2012-08-16T15:30:06.403 に答える