I am trying to change page content with innerHTML using the output of a specific function.
function euclid() {
var a = document.getElementById('a');
var b = document.getElementById('b');
var r = [a, b]
var j = 1, s = [1, 0], t = [0, 1], k = ["X"];
while (r[j] > 0) {
k.push(Math.floor(r[j-1] / r[j]));
r.push(r[j-1] - r[j]*k[j]);
s.push(s[j-1] - s[j]*k[j]);
t.push(t[j-1] - t[j]*k[j]);
j++;
}
var result = "gcd(" + a.value + ", " + b.value + ") = " + r[r.length - 2].value;
document.getElementById('res').innerHTML = result;
}
var go = document.getElementById('go');
go.addEventListener ('click', euclid, true);
<!DOCTYPE html>
<head>
<title>Euclids Algorithm</title>
</head>
<body>
<h2>Euclids Algorithm</h2>
gcd( <input type="number" id="a"> > <input type="number" id="b"> )
<button type="button" id="go">Go!</button>
<p id="res">To see the result please enter two numbers and press go.</p>
<script src="euclid.js"></script>
</body>
No matter what the algorithm does not seem to modify the list r = [a, b]. Therefore when calling r[r.length - 2] (should be gcd) the program returns a.
I tried everything, but cant get my head around whats wrong. What is weird as well is, that the algorithm works in an online js playground and correctly computes the gcd.
Am I using .innerHTML correctly or are there any Javascript mishaps?
Is there anyway to debug js code with print statements (like python for example)?
New to HTML and js and thankful for any help.
console.log()likeprint()in python 3 for debugging in JavaScript. There is also adebuggerkeyword you can call for debugging. And don't see anything wrong with your use ofinnerHTML. The main problem in your code is that you are not listening for any event to get when those number values have been entered. You can use a click event, change event or some submit event. Read more about events in JavaScript at developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/…