此脚本在 Safari 中产生预期结果,但在 Firefox 中则不然。 (这是我测试过的仅有的两个浏览器。)
以下是相关的 HTML:
<form name="inputForm">
Weight:<input type="number" name="weight"> (lbs) <br>
Height:<input type="number" name="height"> (inches) <br>
<hr>
<input type="button" name="process" value="Calculate" onclick="calcBMI(weight.value, height.value)">
<hr>
BMI: <input type="text" readonly name="bmiResult">
</form>
这是整个 Javascript,它位于 <head>...</head>
中HTML 标签:
<script>
var BMIMULTI = 703;
function calcBMI(weight, height)
{
var bmi = (weight * BMIMULTI) / (height * height);
document.inputForm.bmiResult.value = bmi;
}
</script>
两个浏览器中的控制台均未显示错误。我没有链接到 CSS 或 JS 的外部文件。
通过我自己的调试,我发现问题出在 height.value
上。在 onclick="calcBMI(...)"
。 height.value
的值正在被传递到 calcBMI
功能为null
,而weight.value
被适本地传入。
在 Safari 中,这两个值都会传递到 calcBMI
功能成功。
为什么会发生这种情况?而且,为什么它会出现在 Firefox 而不是 Safari 中?
我是 JavaScript 新手,感谢您的帮助。
最佳答案
input
元素(事件处理程序中的当前范围)在某些浏览器中还具有 height
属性,这将阻止您通过该属性访问该字段来自外部范围的名称。
获取字段作为表单的成员,而不是使用全局范围:
calcBMI(this.form.weight.value, this.form.height.value)
关于Javascript 代码可以在 Safari 中运行,但不能在 Firefox 中运行。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128933/