Javascript Math返回NaN

时间:2014-07-17 04:02:36

标签: javascript html

我的数学似乎都是正确的,但我要回NaN。

Javascript:

// This section calculates how much the user will have to spend until the average age of life expectancy.
function updatespending() {
  var age = parseFloat(document.forms[0].CurrentAge.value);
  var value = parseFloat(document.forms[0].NetWorth.value);
  if(document.forms[0].sex.value == "male")
     {var yearsleft = Math.round (76 - age);}
  else if(document.forms[0].sex.value == "female") 
     {var yearsleft = 81 - age;}
  document.forms[0].AnnualSpending.value = Math.round (value / years left);

HTML代码:

<table width="433" border="1" align="center">
  <tr>
    <td class="liquidate">How much will you have to live off of if you liquidate all of your assets?</td>
    </tr>
  <tr>
    <td width="381" height="68"><table width="100%" border="0" cellpadding="4" cellspacing="4">
      <tr>
        <td align="right">Sex:</td>
        <td>
        <input type="radio" name="sex" value="male">Male<br>
        <input type="radio" name="sex" value="female">Female
        </td>
      </tr>
      <tr>
        <td align="right">Current Age:</td>
        <td><input type="text" onchange="updatespending()" onkeyup="numericOnly(this)" maxlength="2" size="3" value="0" name="CurrentAge" /></td>
      </tr>
      <tr>
        <td align="right" >Annual Spending Available:</td>
        <td>$<input name="AnnualSpending" disabled="disabled" readonly /></td>
      </tr>
    </table></td>
  </tr>
</table>

当然,这都包含在表格中。如果我删除了==并放了一个=,它将返回第一个if语句所说的内容。其他任何东西都会返回NaN。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

在你的最后一行,你有:

document.forms[0].AnnualSpending.value = Math.round (value / years left);

不应该是:

document.forms[0].AnnualSpending.value = Math.round (value / yearsleft);

请注意yearsLeft变量。

答案 1 :(得分:1)

ThorbjørnKappelHanser有一部分问题,另一部分是:

document.forms[0].sex.value == "male"

请注意 sex 是一个广播组,因此document.forms[0].sex会返回一个没有属性的NodeList。您需要确定选中哪个单选按钮,然后获取其值,例如

function getRadioGroupValue(group) {
  for (var i=0, iLen=group.length; i<iLen; i++) {
    if (group[i].checked) {
      return group[i].value;
    }
  }
}

然后:

var sex = getRadioGroupValue(document.forms[0].sex);
if (sex == 'male') { 
  ...
}

答案 2 :(得分:0)

NaN表示NaN意味着您尝试将字母或符号添加到不可能的数字中。