Javascript如果语句不能正常工作

时间:2014-07-15 03:30:20

标签: javascript html

我的数学似乎都是正确的,唯一不起作用的是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会正常工作。任何其他建议都会很棒。

3 个答案:

答案 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)

我看到一些错误。

  1. 输入广播未关闭。它应该像

    <input type="radio" name="sex" value="male"></input>
    
  2. 您没有为收音机提供默认值。因此,在加载页面后,将检查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>
    
  3. = if = =,在if语句中。