Reputation: 113
I'm pretty certain Ive got the code correct, I'm pretty certain I have the formulae correct but for some reason I am getting the result 7496238.570769714 when it should be 14.6969 . Which means something must be wrong... What am I missing dear code guru's?
I have searched the forum, found people doing a similar task but with different problems, I'm using mozilla to check my result.
var answer = 0;
var areaFromLength = function() {
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
var c = document.getElementById("c").value;
var x = (a + b + c) / 2;
var answer = Math.sqrt(x * ((x - a) * (x - b) * (x - c)));
document.getElementById("result").innerHTML = "<p>The area of the triangle is " + answer + "</p>";
return false;
};
<form id="tAreas">
<p><input type="number" id="a" name="a" value="5"> length of triangle side 1</p>
<p><input type="number" id="b" name="b" value="6"> length of triangle side 2</p>
<p><input type="number" id="c" name="c" value="7"> length of triangle side 2</p>
<button onclick="return areaFromLength()">Do the maths!</button>
</form>
<div id="result">
<p>Your answer will appear here</p>
</div>
Upvotes: 2
Views: 37
Reputation: 1806
Your numbers are treated as strings when doing math (5+6+7=567). Use parseFloat
:
var answer = 0;
window.areaFromLength = function() {
var a = parseFloat(document.getElementById("a").value);
var b = parseFloat(document.getElementById("b").value);
var c = parseFloat(document.getElementById("c").value);
var x = (a + b + c) / 2;
var answer = Math.sqrt(x * ((x - a) * (x - b) * (x - c)));
document.getElementById("result").innerHTML = "<p>The area of the triangle is " + answer + "</p>";
return false;
};
<form id="tAreas">
<p><input type="number" id="a" name="a" value="5"> length of triangle side 1</p>
<p><input type="number" id="b" name="b" value="6"> length of triangle side 2</p>
<p><input type="number" id="c" name="c" value="7"> length of triangle side 2</p>
<button onclick="return areaFromLength()">Do the maths!</button>
</form>
<div id="result">
<p>Your answer will appear here</p>
</div>
Upvotes: 1