我的数学似乎都是正确的,唯一不起作用的是if语句。它总是从男性价值算出数学。
javascript:
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;
}
}
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>
我还想做到这一点,如果个人将性别从男性改为女性,那么它会像我更新当前年龄时那样更新。不太确定on change会正常工作。任何其他建议都会很棒。
答案 0 :(得分:6)
问题是你在说
if(document.forms[0].sex.value = "male")
//this statement always return true so it will always go to if statement block.
你应该说
if(document.forms[0].sex.value == "male") {
答案 1 :(得分:0)
你只使用一个相等,永远记住......一个等于值的赋值,几乎总是返回true,double equals是一个比较,而triple等于一个类型严格的比较。
话虽如此,请尝试将其更改为:
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;
}
如果有帮助,请告诉我们。
答案 2 :(得分:-2)
我看到一些错误。
输入广播未关闭。它应该像
<input type="radio" name="sex" value="male"></input>
您没有为收音机提供默认值。因此,在加载页面后,将检查NO值。因此,document.forms [0] .sex.value既不是男性也不是女性。请添加默认值,然后重试:
<input type="radio" name="sex" value="male" checked="checked">Male</input>
<input type="radio" name="sex" value="female">Female</input>
= if = =,在if语句中。