Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么调用时我的函数不起作用?_Javascript_Html_If Statement_Radio Button - Fatal编程技术网

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

Javascript 为什么调用时我的函数不起作用?,javascript,html,if-statement,radio-button,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 malebm

目前正在做一个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()">

代码有很多问题,所以我建议您阅读一些关于javascript的教程。另外,您显示的代码不包含BMI表单,但我认为表单在您的代码中

问题1 括号不匹配。谢谢多米西

问题2 您不需要有两个bmr函数。您必须在函数内部测试所选的性别。谢谢你

问题3 您不能仅仅测试性别==男性,原因有二:

性别尚未确定 男性是未定义的 您必须使用:

 if (document.getElementById("male").checked) {
还记得我在问题2中说的吗

谢谢你

正确代码 我认为,如果你能借助上述描述,让它自己发挥作用,你会学到更多。但是如果你只是想要一个工作代码,那就来吧

Html: 您当前的代码工作正常, 如果您有输入体重、身高和年龄的BMI表格

Javascript: 问一个比我了解得更多的人: HTML5中允许使用它吗

document.bmiform.weight.value
或者我们必须使用

document.getElementById('weight').value
还是别的什么


请原谅我的英语,我来自芬兰:

calculatebmr在哪里?我建议学习一些基本的JavaScript和web编程教程。SO格式的代码有太多明显的基本问题。@nicholas我刚刚格式化了代码。现在您可以清楚地看到,在第一个if中有一个括号不匹配。例如,您需要一个括号来包含一个如下的函数:函数bmrweight,height,age{if document.getElementByIdmale.checked返回66+13.7*weight+5*height-6.8*age;否则返回655+9.5*weight+1.8*height-4.7*age;}根据这篇文章,这些集合已经过时了:-我不再使用它们,但是在将表单传递给函数时它们是有意义的:function calculatebmrtheForm{var height=parseintheform.height.value,10。。。
document.getElementById('weight').value