函数内的setInterval
实际上不会调用fibo
函数,而是外部的函数。按下按钮时,getinfo
是函数调用。我正在尝试使用我们获取给用户的间隔信息来将其用于集合interval(fibo,userEnterInterval)
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>problems</title>
<b id="series">hi</b>
</head>
<body method="get">
<form method="post">
<label for="Range"> Range(N): </label>
<input id="Range" type="text" placeholder="Range" name="Range">
<label for="Interval"> Interval in seconds </label>
<input id="Interval" type="text"enter code here placeholder="Interval" name="Interval">
<input id="button" type="submit" onclick="getinfo()" />
</form>
<script type="text/javascript">
var fis = [];
function getinfo(){
var interv = document.getElementById('Interval').value;
var range = document.getElementById('Range').value;
range =range*1000;
setInterval(fibo,1000 );
}
setInterval(fibo,1000 );
var printS = document.getElementById('series');
function fibo(){
if(fis.length == 0){
printS.textContent = '0 ';
fis.push(0);
}else if( fis.length == 1){
alert(fis.length);
printS.textContent += '1 ';
fis.push(1);
alert(fis.length);
}else{
var next = fis[fis.length-1] + fis[fis.length-2];
printS.textContent +=next.toString() + ' ';
fis.push(next);
}
}
</script>
</body>
</html>
答案 0 :(得分:0)
您需要阻止提交表单的默认操作。
<input id="button" type="submit" onclick="getinfo(event);" />
function getinfo(e){
e.preventDefault();
var interv = document.getElementById('Interval').value;
var range = document.getElementById('Range').value;
range =range*1000;
setInterval(fibo,1000 );
}
它将阻止提交页面的默认操作。这当然意味着间隔将会执行。
答案 1 :(得分:-1)
设置间隔的频率时需要使用interv
:
setInterval(fibo,1000 * interv);
但这不会阻止旧计时器运行。您应该将它分配给变量并在使用新间隔重新启动它之前将其停止。
function getinfo(){
var interv = document.getElementById('Interval').value;
var range = document.getElementById('Range').value;
range =range*1000;
clearInterval(timer);
timer = setInterval(fibo,1000 * interv);
}
var timer = setInterval(fibo,1000 );
您还应该将按钮更改为type="submit"
,以便它不会提交表单,这将重新加载页面并停止脚本。