2016-01-02 142 views
-2

我想在随机时间间隔内做一个随机函数。 这里是代码:在随机时间间隔内做随机函数(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); 
    }()); 

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

+1

*“它不工作” *如“无法甚至运行”,“运行,但在某些时候爆炸”,“运行,但不会做什么我期望“,或者......? – kryger

+0

我知道有.hmtl但这仍然不起作用! :) –

回答

0

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

Uncaught ReferenceError: numberTWO is not defined(…)

所以,你的代码将只是解决这个问题,请更换:

var randomfunction = [numberOne, numberTWO]; 

通过:

var randomfunction = [numberOne, numberTwo]; 

希望这会有所帮助。

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