gpt4 book ai didi

javascript - 使用 JS 显示计算的 HTML 输出

转载 作者:行者123 更新时间:2023-12-05 00:35:48 40 4
gpt4 key购买 nike

我正在尝试使用 HTML 和 JS 构建一个卡路里计算器,目前正在努力在屏幕上(或通过 console.log)显示输出。我知道我在做一些非常基本的错误,但目前无法确定那是什么。
下面是我的 HTML 和 JS 代码:

document.getElementById("bmrForm").addEventListener("submit", calcBMR);

function calcBMR(gender, weightKG, heightCM, age) {

// Calculate BMR
if (gender = 'male') {
let BMR = 10 * weightKG + 6.25 * heightCM - 5 * age + 5;
} else {
let BMR = 10 * weightKG + 6.25 * heightCM - 5 * age - 161;
}

console.log(BMR);
}
    <body>
<script src="./script.js"></script>
<section>
<form id="bmrForm" onsubmit="calcBMR()">
<input type="text" id="gender" placeholder="Male or female?">
<input type="number" id="weight" placeholder="Weight in KG">
<input type="number" id="height" placeholder="Height in CM">
<input type="number" id="age" placeholder="How old are you?">
<button type="submit" id="submitBtn">Do Magic!</button>
</form>
<p id="output">0</p>
</section>
</body>

最佳答案

为了达到您想要的结果,需要修改几件事。

  • document.getElementById("bmrForm").addEventListener("submit", calcBMR);不需要,因为我们可以将函数直接传递给 onsubmit form 的属性元素。
  • gender , weightKG , heightCM , 和 age参数不会自动传递到 calcBMR功能。需要从文档中检索值。
  • BMR由于 scoping,需要在 if/else block 上方定义变量.
  • 一个 return声明需要添加到 onsubmit属性,以便表单不提交和刷新页面。或者,如果想要的效果是更新屏幕上的文本,button带有 click 的元素添加到它的事件处理程序可能是一个更好的选择 formsubmit处理程序。
  • 使用 == 比较字符串或 ===在 JavaScript 中。因此,gender = 'male'部分需要更改为gender === 'male' .
  • 为了更新输出,元素的 textContent可以使用 document.getElementById("output").textContent = BMR 进行更改.

  • 下面是上面列出的更改的代码。

    function calcBMR() {
    let gender = document.getElementById("gender").value;
    let weightKG = document.getElementById("weight").value;
    let heightCM = document.getElementById("height").value;
    let age = document.getElementById("age").value;
    let BMR;
    // Calculate BMR
    if (gender === 'male') {
    BMR = 10 * weightKG + 6.25 * heightCM - 5 * age + 5;
    } else {
    BMR = 10 * weightKG + 6.25 * heightCM - 5 * age - 161;
    }

    console.log(BMR);
    document.getElementById("output").textContent = BMR;
    return false;
    }
    <body>
    <script src="./script.js"></script>
    <section>
    <form id="bmrForm" onsubmit="return calcBMR()">
    <input type="text" id="gender" placeholder="Male or female?">
    <input type="number" id="weight" placeholder="Weight in KG">
    <input type="number" id="height" placeholder="Height in CM">
    <input type="number" id="age" placeholder="How old are you?">
    <button type="submit" id="submitBtn">Do Magic!</button>
    </form>
    <p id="output">0</p>
    </section>

    关于javascript - 使用 JS 显示计算的 HTML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70806409/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com