-2

I want to make my calculator... in this calculator you input your height, weight and gender after that click on button and my calculator, calculate you BMI.

function cal() {
  var h = document.getElementsByName("height").value; //it's get my height
  var w = document.getElementsByName("weight").value; //it's get my weight
  var r = (w / (h * h)) * 10000; //it's calculate MBI
  document.getElementById("calcu").innerHTML = r; //the answer shows under my form
  alert(r);
}
<form>
  <fieldset>
    <legend>محاسبه BMI</legend>//it's calculate BMI قد (cm)<br>//it's height
    <input type="number" name="height" placeholder="175" value="175"><br> وزن (kg)<br>//it's weight
    <input type="number" name="weight" placeholder="75" value="73"><br> جنسیت
    <br>//it's gender
    <input type="radio" name="female" value="gender">زن//women
    <input type="radio" name="male" value="gender">مرد//man<br><br>
    <input type="button" value="محاسبه" onClick="cal()"><br>//calculator button
    <p id="calcu"></p>
  </fieldset>
</form>
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79

3 Answers3

1

You need to 1: Select only one element each time, and 2: Convert values to a number:

function cal() {
  var h = parseInt(document.getElementsByName("height")[0].value);
  var w = parseInt(document.getElementsByName("weight")[0].value);
  var r = (w / (h * h)) * 10000; //it's calculate MBI
  document.getElementById("calcu").innerHTML = r; //the answer shows under my form
  alert(r);
}
<form>
  <fieldset>
    <legend>محاسبه BMI</legend>//it's calculate BMI قد (cm)<br>//it's height
    <input type="number" name="height" placeholder="175" value="175"><br> وزن (kg)<br>//it's weight
    <input type="number" name="weight" placeholder="75" value="73"><br> جنسیت
    <br>//it's gender
    <input type="radio" name="female" value="gender">زن//women
    <input type="radio" name="male" value="gender">مرد//man<br><br>
    <input type="button" value="محاسبه" onClick="cal()"><br>//calculator button
    <p id="calcu"></p>
  </fieldset>
</form>
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79
0

document.getElementsByName returns a collection of elements and .value is undefined for that. You should access the first element of that using

document.getElementsByName("...")[0].value

And also convert it number using +

function cal(){
 var h= +document.getElementsByName("height")[0].value;//it's get my height
 var w= +document.getElementsByName("weight")[0].value;//it's get my weight
 var r= (w/(h*h))*10000;//it's calculate MBI
 document.getElementById("calcu").innerHTML=r;//the answer shows under my form
 alert(r);
}
<form>
     <fieldset>
       <legend>محاسبه BMI</legend>//it's calculate BMI
        قد (cm)<br>//it's height
        <input type="number" name="height" placeholder="175" value="175"><br>
        وزن (kg)<br>//it's weight
        <input type="number" name="weight" placeholder="75" value="73"><br>
     جنسیت<br>//it's gender
     <input type="radio" name="female" value="gender">زن//women
     <input type="radio" name="male" value="gender">مرد//man<br><br>
        <input type="button" value="محاسبه" onClick="cal()"><br>//calculator button
     <p id="calcu"></p>
     </fieldset>
   </form>
Maheer Ali
  • 35,834
  • 5
  • 42
  • 73
-1

function cal(){
 var h= document.getElementsByName("height")[0].value;
 var w= document.getElementsByName("weight")[0].value;
 var r= (w/(h*h))*10000;
 document.getElementById("calcu").innerHTML=r;
 alert(r);
}
<div class="sectionmenu">
   <form>
     <fieldset>
       <legend>محاسبه BMI</legend>
        قد (cm)<br>
        <input type="number" name="height" placeholder="175" value="175"><br>
        وزن (kg)<br>
        <input type="number" name="weight" placeholder="75" value="73"><br>
     جنسیت<br>
     <input type="radio" name="female" value="gender">زن
     <input type="radio" name="male" value="gender">مرد<br><br>
        <input type="button" value="محاسبه" onClick="cal()"><br>
     <p id="calcu"></p>
     </fieldset>
   </form> 
 
</div>