javascript - JS 新手:如何在 HTML 文档中正确调用递归函数?
问题描述
我对在这个 HTML 文档中正确调用函数有点困惑。我究竟做错了什么?该函数应返回介于 1 和输入字段中输入的任何数字之间的所有数字的总和,但返回的是 NaN。如何将函数的返回值分配并显示到禁用的输入字段?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Recursion</title>
<script>
let recursiveSum = (num) => {
if (num === 1) {
return 1;
} else {
return num + recursiveSum(num-1);
}
}
</script>
</head>
<body>
<h1>Find the sum of 1 to some number!</h1>
<form id="myForm" name="myForm">
<input type="number" id="numInput" name="numInput" placeholder="Enter a positive number here" autofocus>
<input type="text" id="sum" name="sum" disabled>
<button type="button" onclick="recursiveSum(this.form.numInput.value);">Calculate! </button>
</form>
</body>
</html>
解决方案
目前,您的函数没有显式返回任何值,因此undefined
是从函数隐式返回的。
在每个递归调用中设置value
也没有任何意义。您应该在所有递归的结果之后设置该值。
const elm = document.getElementById("sum")
function btnClick(num){
let recursiveSum = (num) => {
if(num === 1) return 1;
return num+recursiveSum(num-1)
}
elm.value = recursiveSum(+num)
}
<h1>Find the sum of 1 to some number!</h1>
<form id="myForm" name="myForm">
<input type="number" id="numInput" name="numInput" placeholder="Enter a positive number here" autofocus>
<input type="text" id="sum" name="sum" disabled>
<button type="button" onclick="btnClick(this.form.numInput.value);">Calculate! </button>
</form>
推荐阅读
- azure-devops - Release Pipeline 在 linux 服务器中解压 zip
- godot - AnimatedSpriteFrame 的几个 CollisionShape2D
- python - 音乐播放器 Python
- android - 我的微调器和页面标题之间的 Android Studio 空间
- javascript - 在 android 应用程序上看不到 EXTRA_PROCESS_TEXT - React Native+Java
- html - 尝试使用导入的 Sass 变量时出错
- javascript - 完整的日历时间线视图资源绑定多个数据
- asp.net-core - 从 Json.Net 移动到 System.Text.Json 后,属性未显示在招摇请求中
- python - 获取图轴的基数
- php - Wordpress - 作为搜索结果显示某个类别的帖子 - 存档页面