【发布时间】:2019-05-04 16:45:27
【问题描述】:
我正在尝试使用特定函数的输出更改带有 innerHTML 的页面内容。
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>
不管用什么算法似乎都没有修改列表r = [a, b]。因此当调用r[r.length - 2](应该是gcd)时,程序返回a。
我尝试了所有方法,但无法弄清楚哪里出了问题。 奇怪的是,该算法在在线 js 操场上工作并正确计算 gcd。
我是否正确使用了 .innerHTML 或者是否有任何 Javascript 故障?
有没有用 print 语句调试 js 代码(例如 python)?
HTML 和 js 新手,感谢您的帮助。
【问题讨论】:
-
chrome 上的 F12 应该打开 devtools
-
您可以在 python 3 中使用
console.log()和print()一样在 JavaScript 中进行调试。还有一个debugger关键字可以调用以进行调试。并且不要发现您使用innerHTML有任何问题。您的代码中的主要问题是,当输入这些数值时,您没有监听任何要获取的事件。您可以使用单击事件、更改事件或某些提交事件。在developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/… 上阅读有关 JavaScript 事件的更多信息 -
@JosephRex 这听起来像是我要找的,非常感谢。
标签: javascript html innerhtml