Как получить интервал для setInterval от пользователя - PullRequest
0 голосов
/ 01 июня 2018

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 голосов
/ 01 июня 2018

Необходимо запретить действие по умолчанию при отправке формы.

<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 );
  }

Это предотвратит действие по умолчанию при отправке страницы.Что, конечно, означает, что интервал будет выполнен.

0 голосов
/ 01 июня 2018

Вам необходимо использовать 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", чтобы она не отправляла форму, которая перезагрузитстраницу и остановите скрипт.

...