-3

这是我到目前为止的代码我无法让代码执行函数并将数据从函数正确输出到“Total BMI”文本框我一直在寻找几个小时试图弄清楚它。这是一个课堂作业,我遇到了麻烦,因为我不理解 javascript 中使用的语法来完成我需要完成的所有事情。我的老师确实帮不上忙,因为这是我们的第二个作业,而且从未上过关于如何开始用 Javascript 编写代码的讲座。感谢任何人提供的任何帮助。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>BMI Calculator</title>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<link rel="stylesheet" href="BMI.css" type="text/css" />
<script type="text/javascript">
/* <![CDATA[ */
function calcBMI(Height, Weight) {
     var h = parseInt(height);s
     var w = parseInt(Wieght);
     var TotalBMI = w * 703 / (h * h);
     document.write ("Your BMI is: " + TotalBMI)  
}

/* ]]> */
</script>

</head>
<body>
<h2>BMI Calculator</h2>
<form action="" name="BMI">
<table border="1">
<tr><td>Height :(in)</td><td><input type="text" name="Height" value="" /></td></tr>
<tr><td>Weight :(lbs)</td><td><input type="text" name="Weight" value="" /></td></tr>
<tr><td><input type = "button" value = "Calculate" onclick = "calcBMI('Height', 'Weight')"></td></tr>
<tr><td>Total BMI:</td><td><input type="text" name="TotalBMI" value="" /></td></tr>
</table>
</form>
</body>
</html>
4

2 回答 2

1

这里,

onclick = "calcBMI('Height', 'Weight')"

您正在传递字符串'Height'and 'Weight',尽管您的意思是传递相关字段的值。表单不是这样工作的,所以你应该完全摆脱参数,

onclick = "calcBMI()"

并在函数中,使用 DOM 遍历来获取您需要的值。首先,id为您感兴趣的字段添加一些属性,例如

<tr><td>Height :(in)</td><td><input type="text" name="Height" value="" id="height" /></td></tr>
<tr><td>Weight :(lbs)</td><td><input type="text" name="Weight" value="" id="width" /></td></tr>

然后像这样获得它们的价值:

function calcBMI() {
     var h = parseInt(document.getElementById('height').value);
     var w = parseInt(document.getElementById('weight').value);
     var TotalBMI = w * 703 / (h * h);
     document.write ("Your BMI is: " + TotalBMI)  
}
于 2014-09-12T17:49:26.643 回答
0

首先让我们看看这个:

onclick = "calcBMI('Height', 'Weight')"

您在此处传递的字符串,其中不能转换为整数(至少不是您期望的类型)。看来您想使用名称Height和获取元素的值Width。好吧,这是对id's 以外name的 's 的一个很好的使用。

<tr><td>Height :(in)</td><td><input type="text" id="Height" value="" /></td></tr>
<tr><td>Weight :(lbs)</td><td><input type="text" id="Weight" value="" /></td></tr>
...
<tr><td>Total BMI:</td><td><input type="text" id="TotalBMI" value="" /></td></tr>

现在不需要calcBMI()函数的任何参数,因为我们可以像这样直接获取它们:

document.getElementById("Height").value;

所以这里是你的功能的变化:

function calcBMI() {
    var h = parseInt(document.getElementById("Height").value);
    var w = parseInt(document.getElementById("Weight").value);
    var TotalBMI = w * 703 / (h * h);
    document.getElementById("TotalBMI").value = "Your BMI is: " + TotalBMI;  
}

请注意,我将其更改document.write().innerHTML. 因为document.write()在页面加载后运行会重写 DOM。

另请注意,提交<form>将刷新您的页面。看来您并不真正需要<form>,因此我建议您将其删除。要么阻止默认页面刷新行为。

于 2014-09-12T17:53:12.657 回答