-1

I am attempting to make a web page that can calculate someone's height from the length of their ulna bone, if they cannot tell their height. However, the code does not work.

I am only starting to learn to code and I don't understand what has gone wrong.

var genderInput = document.querySelector(".gender-input-field");
var ageInput = document.querySelector(".age-input-field");
var lengthInput = document.querySelector(".length-input-field");
var calculateButton = document.querySelector(".calculate");
var statement = document.querySelector(".statement");

calculateButton.addEventListener("click", () => {

  if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 32)) {
    statement.innerText = "194 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 32)) {
    statement.innerText = "187 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 31.5)) {
    statement.innerText = "193 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 31.5)) {
    statement.innerText = "186 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 31)) {
    statement.innerText = "191 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 31)) {
    statement.innerText = "184 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 30.5)) {
    statement.innerText = "189 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 30.5)) {
    statement.innerText = "182 cm"
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 30)) {
    statement.innerText = "187 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 30)) {
    statement.innerText = "181 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 29.5)) {
    statement.innerText = "185 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 29.5)) {
    statement.innerText = "179 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 29)) {
    statement.innerText = "184cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 29)) {
    statement.innerText = "178 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 28.5)) {
    statement.innerText = "182 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 28.5)) {
    statement.innerText = "176 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 28)) {
    statement.innerText = "180 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 28)) {
    statement.innerText = "175 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 27.5)) {
    statement.innerText = "178 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 27.5)) {
    statement.innerText = "173 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 27)) {
    statement.innerText = "176 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 27)) {
    statement.innerText = "171 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 26.5)) {
    statement.innerText = "175 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 26.5)) {
    statement.innerText = "170 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 26)) {
    statement.innerText = "173 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 26)) {
    statement.innerText = "168 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 25.5)) {
    statement.innerText = "171 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 25.5)) {
    statement.innerText = "167 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 25)) {
    statement.innerText = "169 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 25)) {
    statement.innerText = "165 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 24.5)) {
    statement.innerText = "167 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 24.5)) {
    statement.innerText = "163 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 24)) {
    statement.innerText = "166 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 24)) {
    statement.innerText = "162 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 23.5)) {
    statement.innerText = "164 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 23.5)) {
    statement.innerText = "160 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 23)) {
    statement.innerText = "162 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 23)) {
    statement.innerText = "159 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 22.5)) {
    statement.innerText = "160 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 22.5)) {
    statement.innerText = "157 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 22)) {
    statement.innerText = "158 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 22)) {
    statement.innerText = "156 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 21.5)) {
    statement.innerText = "157 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 21.5)) {
    statement.innerText = "154 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 21)) {
    statement.innerText = "155 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 21)) {
    statement.innerText = "152 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 20.5)) {
    statement.innerText = "153 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 20.5)) {
    statement.innerText = "151 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 20)) {
    statement.innerText = "151 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 20)) {
    statement.innerText = "149 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 19.5)) {
    statement.innerText = "149 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 19.5)) {
    statement.innerText = "148 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 19)) {
    statement.innerText = "148 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 19)) {
    statement.innerText = "146 cm";
  } else if ((genderInput.value = "male") && (ageInput.value < 65) && (lengthInput.value = 18.5)) {
    statement.innerText = "146 cm";
  } else if ((genderInput.value = "male") && (ageInput.value >= 65) && (lengthInput.value = 18.5)) {
    statement.innerText = "145 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 32)) {
    statement.innerText = "184 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 32)) {
    statement.innerText = "184 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 31.5)) {
    statement.innerText = "183 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 31.5)) {
    statement.innerText = "183 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 31)) {
    statement.innerText = "181 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 31)) {
    statement.innerText = "181 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 30.5)) {
    statement.innerText = "180 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 30.5)) {
    statement.innerText = "179 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 30)) {
    statement.innerText = "179 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 30)) {
    statement.innerText = "178 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 29.5)) {
    statement.innerText = "177 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 29.5)) {
    statement.innerText = "176 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 29)) {
    statement.innerText = "176 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 29)) {
    statement.innerText = "175 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 28.5)) {
    statement.innerText = "175 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 28.5)) {
    statement.innerText = "173 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 28)) {
    statement.innerText = "173 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 28)) {
    statement.innerText = "171 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 27.5)) {
    statement.innerText = "172 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 27.5)) {
    statement.innerText = "170 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 27)) {
    statement.innerText = "170 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 27)) {
    statement.innerText = "168 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 26.5)) {
    statement.innerText = "169 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 26.5)) {
    statement.innerText = "166 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 26)) {
    statement.innerText = "168 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 26)) {
    statement.innerText = "165 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 25.5)) {
    statement.innerText = "166 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 25.5)) {
    statement.innerText = "163 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 25)) {
    statement.innerText = "165 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 25)) {
    statement.innerText = "161 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 24.5)) {
    statement.innerText = "163 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 24.5)) {
    statement.innerText = "160 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 24)) {
    statement.innerText = "162 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 24)) {
    statement.innerText = "158 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 23.5)) {
    statement.innerText = "161 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 23.5)) {
    statement.innerText = "156 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 23)) {
    statement.innerText = "159 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 23)) {
    statement.innerText = "155 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 22.5)) {
    statement.innerText = "158 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 22.5)) {
    statement.innerText = "153 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 22)) {
    statement.innerText = "156 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 22)) {
    statement.innerText = "152 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 21.5)) {
    statement.innerText = "155 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 21.5)) {
    statement.innerText = "150 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 21)) {
    statement.innerText = "154 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 21)) {
    statement.innerText = "148 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 20.5)) {
    statement.innerText = "152 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 20.5)) {
    statement.innerText = "147 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 20)) {
    statement.innerText = "151 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 20)) {
    statement.innerText = "145 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 19.5)) {
    statement.innerText = "150 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 19.5)) {
    statement.innerText = "144 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 19)) {
    statement.innerText = "148 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 19)) {
    statement.innerText = "142 cm";
  } else if ((genderInput.value = "female") && (ageInput.value < 65) && (lengthInput.value = 18.5)) {
    statement.innerText = "147 cm";
  } else if ((genderInput.value = "female") && (ageInput.value >= 65) && (lengthInput.value = 18.5)) {
    statement.innerText = "140 cm";

  }
});
<div class="calculator-container">
  <h1>Height Calculator</h1>
  <p>Gender:</p>
  <input class="gender-input-field" type="text"><br>
  <p>Age:</p>
  <input class="age-input-field" type="text"><br>
  <p>Ulna (preferably left) length in centimeters:</p>
  <input class="length-input-field" type="text"><br>
  <button class="calculate">Calculate</button>
</div>
<h3 class="statement"></h3>
<p class="statement"></p>
<!-- <script src="Height Calculator.js"></script> -->
isherwood
  • 58,414
  • 16
  • 114
  • 157
John
  • 3
  • 2
  • 4
    There must be a better way of calculating the height, so many if/else is never a good option. – 0stone0 Dec 12 '22 at 13:55
  • 1
    _"the code does not work"_ Is never a sufficiently detailed description of what happened when you tried your code. You said _"I don't understand what has gone wrong"_ but what are the symptoms? Give us an idea of what _did_ happen when you ran your code. It's always a good idea, when asking any question on this site, to give the details of your _expected results_ vs _actual results_. – Wyck Dec 12 '22 at 14:04
  • Please see [ask]. Your question is too broad. – isherwood Dec 12 '22 at 14:06
  • Please see https://en.wikipedia.org/wiki/Don%27t_repeat_yourself. Whenever you find yourself repeating code more than once, something is probably wrong with your design pattern. – isherwood Dec 12 '22 at 14:08

1 Answers1

3

I think you are getting confused between assignment and equivalence operators.

In your code, you use lengthInput.value = 32 and genderInput.value = "male" to check if the input value is equal to 32 / male. However, a single equal sign is the assignment operator, which assigns the value on the right to the value on the left.

If you want to compare if two things are equal, or equivalent, the == operator is used:

lengthInput.value == 32 checks if the value of the input is equal to 32.

genderInput.value == "male" checks if the inputted value is equal to "male".

Just a tip for the future - Having a lot of else if statements for every single outcome is not very time effective, as you now have to change the code for every statement. Perhaps you could use a function with arguments to be more efficient?

Fyx
  • 174
  • 8
  • In addition, the assignment operator also returns the value that has been assigned which is always truthy and will therefore always passes the first condition that matches both the gender and age irrespective of any length measurement. – phuzi Dec 12 '22 at 14:07
  • Ah yes, thanks for the additional tip. – Fyx Dec 12 '22 at 14:09
  • Your advice has worked! Many thanks. – John Dec 14 '22 at 13:48
  • No problem! If your question has been answered, please mark the answer as accepted :) – Fyx Dec 14 '22 at 18:39