javascript - 阶乘函数输出不显示,不会从文本框中获取值

标签 javascript html

我尝试创建的代码运行一个函数,该函数接受您在文本框中输入的任何值并将其分解。当我让它从提示中获取值时,它工作得很好,但现在我试图让它看起来更整洁,并从文本框中获取值,它给了我一个“超出最大调用堆栈大小”错误,并且不会' t 正确执行。我认为函数查找文本框值并将其输入到函数中时遇到问题。

window.onerror = function(message, url, line, col) {
  console.error("Error: " + message + "\nURL: " + url + "\nLine: " + line + "\nColumn: " + col);
  return true;
};
var x = document.getElementById("factortext").value;
function factorial(x) {
  if (x === 0) {
    return 1;
  }
  return x * factorial(x - 1);
}
console.log(factorial(5));
document.getElementById("display").innerHTML = factorial(x);
<h1 id="title">Factorialize!</h1>
<input type="text" id="factortext" name="factor" value="Input Number here!"></input><br><br>
<button onclick="factorial()">Submit</button>
<p id="display"></p>

最佳答案

您需要一个回调函数。只需让该函数调用阶乘即可。

您原来的 onClick 函数中没有参数。

window.onerror = function(message, url, line, col) {
  console.error("Error: " + message + "\nURL: " + url + "\nLine: " + line + "\nColumn: " + col);
  return true;
};

console.log(factorial(5));

function factorial(x) {
  if (x === 0) return 1;
  return x * factorial(x - 1);
}

function calculateFactorial() {
  var x = document.getElementById("factortext").value;
  document.getElementById("display").innerHTML = factorial(x);
}
<h1 id="title">Factorialize!</h1>
<input type="text" id="factortext" name="factor" placeholder="Input Number here!" />
<br><br>
<button onClick="calculateFactorial()">Submit</button>
<p id="display"></p>

关于javascript - 阶乘函数输出不显示,不会从文本框中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632767/

相关文章:

javascript - 如何迭代多个对象?

javascript - KnockoutJs 计算数组计算不正确

html - flex 列不匹配

javascript - 使html成为标签href等待onclick中的异步函数返回?

Python HTML - 按属性获取元素

javascript - 如何在替换函数中传递变量

javascript - 无法使用 Ionic 的媒体插件在音频文件中创建语音消息

javascript - 使用输入 slider 控制多个 div 的颜色?

javascript - 回调函数终止外循环

javascript - 一个 "fixed"<div>-Tag (Footer) resize height of another