如何从用户获取setInterval的间隔

时间:2018-06-01 08:02:33

标签: javascript setinterval

函数内的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>

2 个答案:

答案 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",以便它不会提交表单,这将重新加载页面并停止脚本。