为什么我的函数在被调用时不起作用?

时间:2015-11-07 06:44:50

标签: javascript html if-statement radio-button

目前正在进行BMR计算器练习,但我似乎无法使该功能正常工作。如果选中男性单选按钮,则尝试使用男性bmr公式,但不会出现警告。

<script>
    if(gender==male){
        function bmr(weight, height, age) {
            var malebmr = (66 + (13.7 * weight) + (5 * height) - (6.8 * age));
            return malebmr;
        }
    else {
        function bmr(weight, height, age) {
            var femalebmr = (655 + (9.5 * weight) + (1.8 * height) - (4.7 * age));
            return femalebmr;
        }
    }
    }

    function calculatebmr() {       
        alert(bmr(parseFloat(document.bmiform.weight.value),
        parseFloat(document.bmiform.height.value),
        parseFloat(document.bmiform.age.value)));
    }

</script>    

<fieldset data-role="controlgroup" data-type="horizontal">
    <legend>Gender</legend>
    <label for="male">Male</label>
    <input type="radio" name="gender" value="male" id="male" checked>
    <label for="female">Female</label>
    <input type="radio" name="gender" value="female" id="female">
</fieldset>
<input type="button" value="Calculate"
onclick="calculatebmr()">

1 个答案:

答案 0 :(得分:0)

代码存在许多问题,因此我建议您阅读有关javascript的一些教程。此外,您显示的代码不包含bmiform,但我认为该表单位于您的代码中。

问题1

您的括号不匹配。 (感谢Domysee)

问题2

您不需要有两个bmr()功能。您必须只测试功能中选择性别的。 (感谢mplungjan)

问题3

您不能仅仅因为以下两个原因来测试if (gender==male)

  1. 性别未定义
  2. 男性未定义
  3. 您必须使用:

     if (document.getElementById("male").checked) {
    

    记住我在问题2中所说的内容

    (谢谢mplungjan)

    更正代码

    如果您尝试在上述说明的帮助下自行完成工作,我认为您将学到很多东西。但是如果你只是想要一个有效的代码,那就去吧。

    HTML:

      

    您当前的代码有效,  如果您的bmiform包含输入weightheightage

    使用Javascript:

    function bmr(weight, height, age) {
        if (document.getElementById("male").checked) {
            return (66 + (13.7 * weight) + (5 * height) - (6.8 * age)); /* Male */
        }
        else {
            return (655 + (9.5 * weight) + (1.8 * height) - (4.7 * age)); /* Female */
        }
    }
    
    function calculatebmr() {       
        alert(bmr(parseFloat(document.bmiform.weight.value),
        parseFloat(document.bmiform.height.value),
        parseFloat(document.bmiform.age.value)));
    }
    


    对于比我更了解的人的问题:)

    HTML5中是否允许使用

    document.bmiform.weight.value
    

    或者我们必须使用

    document.getElementById('weight').value
    

    或其他什么?


    聚苯乙烯。对不起我的英语,我来自芬兰:)