我的数学似乎都是正确的,但我要回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。任何帮助将不胜感激。
答案 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意味着您尝试将字母或符号添加到不可能的数字中。