随机区间做随机函数(JQUERY)

时间:2016-01-02 23:04:54

标签: javascript jquery

我想在随机时间间隔内做一个随机函数。 这是代码:

    function numberOne() {
          $("#here").hmtl("numberOne");
        }

        function numberTwo() {
          $("#here").hmtl("numberTWO");
    }

    var randomfunction = [numberOne, numberTWO]
    var randomfunction = randomfunction[Math.floor(Math.random() * randomfunction.length)];


    (function loop() {
      var rand = Math.round(Math.random() * (1000 - 500)) + 500;
      setTimeout(function() {
        randomfunction();
        loop();
      }, rand);
    }());

它不起作用。我不知道为什么。你能帮我解释一下所有的错误吗?谢谢!

3 个答案:

答案 0 :(得分:0)

如果您正在检查控制台,则会发现它引发以下错误:

  

未捕获的ReferenceError:未定义numberTWO(...)

因此,只需修复此问题,您的代码就可以正常工作,替换:

var randomfunction = [numberOne, numberTWO];

通过:

var randomfunction = [numberOne, numberTwo];

希望这有帮助。

答案 1 :(得分:0)

我可以看到一个错误的函数调用,hmtl而不是html。

但我认为我们可以改变你的方法并将其提升到一个新的水平。你可以这样做。

    function numberOne() {
      $("#here").html("numberOne");
    }

    function numberTwo() {
      $("#here").html("numberTwo");
    }

    var randomFunctionsArray = [numberOne, numberTwo];

    function loop() {

       randomFunctionsArray[Math.floor(Math.random() * randomFunctionsArray.length)]();

       setTimeout(function() {
           var rand = Math.round(Math.random() * (1000 - 500)) + 500;
           loop();
       }, rand);

     }

     loop();

答案 2 :(得分:0)

jQuery(function($){
  function functionOne () {
    console.log('one');
  }
  
  function functionTwo () {
    console.log('two');
  }
  
  var functions = [functionOne, functionTwo];
  
  (function loop () {
    var waitTime = Date.now() % 5000;
    var executionIndex = Date.now() % functions.length;
    console.log(executionIndex);
    console.log(waitTime);
    functions[executionIndex]();
    setTimeout(loop, waitTime);
  })();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>