<!DOCTYPE HTML>
<html>
<title>Fibonacci Assignment</title>
<head>
<script>
function chkInput(){
var n = parseInt(n1)
var a,b,r;
a = 0;
b = 1;
r = 1;
for(var i = 2; i <= n; i++){
r = a + b;
a = b;
b = r;
}
alert (r);
}
</script>
</head>
<body>
<input type="text"
id="n1">
<input type="button"
value="Enter"
onclick="chkInput(n1.value)">
</body>
</html>
我是JavaScript的新手,我一直在尝试构建一个代码,用于查找Fibonacci序列的第N个术语,其中用户输入一个数字,序列一直运行到第n个数字。我的任务是同时使用函数和for循环。但是当我运行它时,无论我输入什么数字,它都会返回1.我的问题是为什么会这样?我是学生所以我只需要大方向而不是答案。这个片段是我到目前为止的。
答案 0 :(得分:0)
您需要使用像document.getElementById("n1").value
你的算法也应该有a = 1;
function chkInput(){
var n = parseInt(document.getElementById("n1").value)
var a,b,r;
a = 1;
b = 1;
r = 1;
for(var i = 2; i <= n; i++){
r = a + b;
a = b;
b = r;
}
alert (r);
}
&#13;
<!DOCTYPE HTML>
<html>
<title>Fibonacci Assignment</title>
<head>
<script>
</script>
</head>
<body>
<input type="text"
id="n1">
<input type="button"
value="Enter"
onclick="chkInput(n1.value)">
</body>
</html>
&#13;
答案 1 :(得分:0)
您没有将文本输入值捕获为参数。
你有:
checkInput()
应该是
chkInput(n1)
所以你的行
var n = parseInt(n1);
正在解析undefined
,因此n的值现在是NAN(非数字),因此for循环从未执行过。
function chkInput(n1) {
var n = parseInt(n1);
var a, b, r;
a = 0;
b = 1;
r = 1;
for (var i = 2; i <= n; i++) {
r = a + b;
a = b;
b = r;
}
alert(r);
}
<input type="text" id="n1">
<input type="button" value="Enter" onclick="chkInput(n1.value)">
答案 2 :(得分:0)
你差不多完成了作业。
您错过了在函数定义中接收的值。
将函数chkInput(){更改为函数chkInput(n1){将完成您的作业。
在下面找到您的工作代码段。
<!DOCTYPE HTML>
<html>
<title>Fibonacci Assignment</title>
<head>
<script>
function chkInput(inputValue) {
var n = parseInt(inputValue)
var a,b,r;
a = 0;
b = 1;
r = 1;
for(var i = 2; i <= n; i++){
r = a + b;
a = b;
b = r;
}
alert (r);
}
</script>
</head>
<body>
<input type="text" id="n1">
<input type="button" value="Enter" onclick="chkInput(n1.value)">
</body>
</html>