此脚本在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,它放在HTML的<head>...</head>
标记中:
<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的新手,谢谢你的帮助。
答案 0 :(得分:1)
input
元素(事件处理程序中的当前作用域)在某些浏览器中也具有height
属性,这将阻止您从外部作用域访问该名称的字段。
将字段作为表单的成员而不是使用全局范围:
calcBMI(this.form.weight.value, this.form.height.value)
答案 1 :(得分:1)
尽量避免使用像height这样的常用词作为变量。 我之前遇到过类似的问题。我使用“删除”作为函数名称,过去工作正常但在firefox更新后失败。