使用JS显示计算结果的HTML输出

2024-04-16

我正在尝试使用 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>

为了达到您想要的结果,需要修改一些东西。

  1. 线路document.getElementById("bmrForm").addEventListener("submit", calcBMR);不需要,因为我们可以直接将函数传递给onsubmit的属性form元素。
  2. The gender, weightKG, heightCM, and age参数不会自动传入calcBMR功能。需要从文档中检索这些值。
  3. The BMR变量需要定义在 if/else 块之上,因为scoping https://www.w3schools.com/js/js_scope.asp.
  4. A return需要添加声明onsubmit属性,以便表单不提交并刷新页面。或者,如果所需的效果是更新屏幕上的文本,则button元素与一个click添加事件处理程序可能是一个更好的选择form with a submit处理程序。
  5. 字符串比较使用== or ===在 JavaScript 中。因此,gender = 'male'部分需要改为gender === 'male'.
  6. 为了更新输出,元素的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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用JS显示计算结果的HTML输出 的相关文章

随机推荐

  • 如何在 Electron BrowserWindow 中查看 PDF?

    所以我有这个 Electron 应用程序 在一个 html 文件中 我链接了另一个脚本 该脚本为程序提供了一些实用功能 其中之一是 function openPDF filePath let pdfWindow new electron r
  • 是否可以使用多处理对一个 h5py 文件进行并行读取?

    我正在尝试加快从 h5py 数据集文件中读取块 将它们加载到 RAM 内存中 的过程 现在我尝试通过多处理库来做到这一点 pool mp Pool NUM PROCESSES gen pool imap loader indices 加载器
  • 在 Mac OS X 中获取进程创建通知

    我正在尝试为 Mac OS X 编写 kext 当任何进程启动时都会收到通知 在 Windows 中 您可以通过调用 PsSetLoadImageNotifyRoutine 并指定在进程启动时调用的回调来完成此操作 这是有记录的方式 它适用
  • 如何处理大型 csv 文件或分块读取大型 CSV 文件

    我有非常大的 csv 文件 我正在尝试迭代它们 我正在使用 opencsv 我想使用 CsvToBean 以便我可以动态设置数据库中的列映射 我的问题是如何在不获取整个文件并将其放入列表中的情况下执行此操作 我正在努力防止记忆错误 我目前正
  • 在服务器端渲染的反应项目中使用标头时,出现“ReferenceError:标头未定义”

    我正在 React 中设置一个新应用程序 我希望它在服务器端呈现 不幸的是我无法使用Headers https developer mozilla org en US docs Web API Headers因为它不断抛出错误 Refere
  • Calendar.getTime() 中奇怪的 IllegalArgumentException

    这个非常简单的测试失败了IllegalArgumentException HOUR OF DAY 2 gt 3 我看不出有什么理由 您可以将任何小时 天 月 年更改为任何其他值 测试就会成功 我测试过的任何 JRE 均失败 似乎是 Greg
  • 我收到错误“CharField 不支持查找‘图标’或不允许加入该字段。”

    我正在尝试进行动态查询来获取数据 如下所示 query request GET get q kwargs 0 1 format first name icontains query if query players list players
  • Spring Data Rest / Spring Hateoas 自定义控制器 - PersistentEntityResourceAssembler

    我正在尝试向 RepositoryRestResource 自动生成的端点添加一些额外的业务逻辑 请看下面的代码 资源 RepositoryRestResource collectionResourceRel event path even
  • python os.fdopen(os.open()) 不能用于写入?

    这个问题与答案有关在Python中写入具有特定权限的文件 https stackoverflow com questions 5624359 write file with specific permissions in python用于打
  • 在gerrit中使用OpenID注册失败

    这些天我正在尝试设置 gerrit 但是当涉及到使用 OpenID 注册时 总是出现一个问题 提供商不受支持 或者输入错误 我在上面看到了同样的问题OpenID 与 Gerrit 不工作 https stackoverflow com qu
  • IntelliJ 中的 Gradle SourceSet 依赖项

    我有一个带有附加源集的 Gradle 项目 acceptance 这包含我的验收测试 而不仅仅是构建时单元和集成测试 我在标准中还有一些辅助类test我想分享的源集 但它不属于main源集 目前这在 Gradle 中运行良好 但 Intel
  • 用于与 TCP 套接字对话的 Cocoa-Touch 框架? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个守护程序在锁定到 TCP IP 端口的服务器上运行 我正在寻找当前是否有任何支持 iPhone
  • php中如何去除标点符号

    除了这些字符之外 如何删除标点符号 这是一个巧妙的方法 preg replace punct target
  • 为多个页面编写一次 Twitter Bootstrap 导航栏

    我正在尝试开始使用 Twitter Bootstrap 3 我想让每个导航栏项目都转到新的 href 例如 我希望导航栏项目 关于 和 联系 链接到对应的about html and contact html pages 我发现的许多网站似
  • 输入时自动完成,使内容跳转

    我有一个输入 在 Chrome 中 当弹出自动完成菜单并且您将鼠标悬停在其中一个选项上时 输入下方的内容会跳转 就像自动完成选择由于某种原因添加垂直填充一样 我怎样才能阻止这个 这很烦人 这是一个例子 小提琴演示 https jsfiddl
  • 如何使用扩展功能保存分层图像

    我正在使用扩展函数将 uiview 保存为 uiimage 该代码用于保存 uiimage 然而 我想做的是在保存到照片库的图像上保存透明图像 所以我尝试使用扩展函数保存分层图像 现在只有 uiivew 被保存 第二层没有被保存 class
  • Web API 返回 csv 文件

    我需要从 Web API 控制器获取 csv 文件 我无法显示 另存为 对话框 页面上仅显示文本输出 我尝试了两者 从 jquery 调用 Export 以及普通的旧 html 控制器 System Web Http HttpGet pub
  • 溢出-y:滚动在 Firefox 中不起作用

    请参考网址 http jsfiddle net 8tFnG 1 http jsfiddle net 8tFnG 1 table border 1 cellspacing 0 cellpadding 1 width 100 table
  • 获取任何给定字符的宽度(以像素为单位)

    我有一个非常棒的想法 但无法找出 NET Framework 中是否有任何类 任何版本 最好是 3 5 或 4 0 允许您传入字符 并获取该字符的宽度 以像素为单位 无论使用哪种字体 字体大小或字体装饰 有人可以指出我正确的方向吗 像这样的
  • 使用JS显示计算结果的HTML输出

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