【问题标题】:BMR calculator not giving me answer that I want (If else issueBMR 计算器没有给我想要的答案(如果其他问题
【发布时间】:2021-08-16 04:37:27
【问题描述】:

我现在正在制作 BMR 计算器,并且我已经想到了大部分内容。由于某种原因,这段代码不想用ifelse 给我正确的值。它只给了我一个条件,即使它是另一个条件(例如,如果是男性,则计算女性)。

var bmr = 0;


function calc() {
  var age = document.getElementById("age").value;
  var gender = document.getElementById("gender").value;
  var height = document.getElementById("height").value;
  var weight = document.getElementById("weigth").value;

  if (gender == 'male') {
    bmr = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age);
  } else if (gender == 'female') {

    bmr = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age);
  }
}



document.getElementsByTagName("button")[0].addEventListener("click", function() {
  calc();
  document.getElementById('lblResult').innerHTML = bmr;

})
* {
  box-sizing: border-box;
  margin: 0;
}

body {
  font-family: Verdana, Arial, sans-serif;
  background-color: #19a4fa;
  min-height: 100vh;
}

header {
  color: rgb(255, 255, 255);
  background-image: linear-gradient(to right, #0051ffee, #ff00d4);
  background-repeat: no-repeat;
  background-size: auto 100%;
  padding: .5em 0 .5em 5.5em;
  height: fit-content;
  text-align: center;
}

#wrapper {
  width: 980px;
  margin-right: auto;
  margin-left: auto;
}

#grad1 {
  height: 100vh;
  background-color: red;
  /* For browsers that do not support gradients */
  background-image: linear-gradient(155deg, #19a4fa, #a527f8);
}

#centre {
  text-align: center;
}
<div id="grad1">
  <div id="wrapper">
    <header>

      <h1>BMR Calculator</h1>

    </header>
    <br>
    <h4><strong>What is BMR?:</strong></h4>
    <p>Basal Metabolic Rate (BMR) is your metabolism rate. It calculates the total amount of calories you should be eating per day based on Age, Height, Weight, and Gender.</p>

    <div id="centre">
      <form action="#">

        <label for="gender">Gender:</label><br>
        <input type="radio" id="gender" name="gender" value="male" required="required"> Male
        <input type="radio" id="gender" name="gender" value="female" required="required"> Female<br><br>

        <label for="age">How old are you?</label><br>
        <input type="number" id="age" value="age" required="required"><br><br>

        <label for="height">What is your height in centimetres? (cm):</label><br>
        <input type="number" id="height" value="height" required="required"><br><br>

        <label for="gender">What is your wight in kilograms? (kg):</label><br>
        <input type="number" id="weigth" value="weight" required="required"><br><br>
      </form>


      <button type="button" onclick="">
      Result</button><br>

      <textarea id="lblResult">BMR</textarea>
    </div>
  </div>
</div>

这困扰了我一段时间,非常感谢一些帮助。

【问题讨论】:

  • } else if { 不正确。它应该只是} else {。但是,在您的情况下,切换语句会更合适
  • 有趣的是,在 javascript 中 switch 语句的执行与 ifelse 差不多。他的 if else 也没有错,但你是正确的,因为 else 是合乎逻辑的选择,因为只有两种可能的选择。
  • 我正在尝试添加更多内容,所以我认为最好添加一个带有嵌套 if 语句的开关,但现在它只会使用默认值,而不是其他条件时活跃

标签: javascript html css calculator


【解决方案1】:

在 html/javascript 中,您应该确保 ID 是唯一的。如下:

 <input type="radio" id="gender" name="gender" value="male" required="required"> Male
 <input type="radio" id="gender" name="gender" value="female" required="required"> Female<br><br>

您已将性别的ID 分配给两个输入元素。

现在要修复性别选择,您需要做的是创建一个仅获取当前选择的单选按钮的选择器。

var gender = document.querySelector('input[name="gender"]:checked').value;

【讨论】:

  • 我不敢相信这很容易。感激不尽
  • @Laser_ 你无法相信这种情况发生在我们所有人身上的频率有多高 =)。很高兴我能帮上忙!
猜你喜欢
  • 2022-10-23
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多