Javascript 代码可以在 Safari 中运行,但不能在 Firefox 中运行。为什么?

标签 javascript html firefox safari

此脚本在 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/

相关文章:

javascript - 将 knockout 绑定(bind)与 selectOrDie 相结合

javascript - jQuery Accordion 展开第一个启用的面板

html - 在整个页面上拉伸(stretch)元素,无论缩放/ View 如何

javascript - 显示具有百分比宽度和不同模式的 float div

html - 使用兼容所有浏览器的 css 和 li 元素创建菜单

javascript - 在javascript中从内存中删除对象

javascript - 如何使用 jQuery 平滑地更改 <img src ="..."/>?

html - margin-left(以百分比设置)随着 Chrome 中的每个元素缩小(而不是在 Firefox 中)

javascript - "The element expressions in an array initializer are evaluated each time the array initializer is evaluated"这句话是什么意思?

css - Firefox 无法在站点页眉/页脚中正确呈现链接