2016-10-12 5 views
-1

配列の別の値を選択して、setInterval関数の時間を変更しようとしています。可変SetInterval時間

なぜコンソールログ出力は1つのインデックスを返しますか、まったく何も返しません。

$("input.btn1").click(function() { 
    var i = 0; 
    //var timeOut = 1000; 

    var timer = setInterval(function() { 

/* 
    var timeArr = [ 
     1000,2000,3000 
    ]; 
    var randInt = getRandomInt(0, 2); 
    var timeOut = timeArr[randInt]; 
*/  


    if(i < btn2.length) { 
      console.log("current timeout: " +timeOut); 
     } else { 
      clearInterval(timer); 
      } 
      i = i + 1; 
     }, randTimeout()); 

}); 


function randTimeout() { 
    var timeArr = [ 
     1000,2000,3000 
    ]; 
    var randInt = getRandomInt(0, 2); 
    var timeOut = timeArr[randInt]; 

    return timeOut; 
} 

function getRandomInt(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 
+1

あなたはだと思いますこれに答えるための 'getRandomInt'のコードを表示する必要があります... –

+1

' console.log() 'がコメントされた' timeOut'変数を使用しようとしているので、 btn2は定義されていませんed。あなたの質問を編集して、[最小限、完成した、そして検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 – nnnnnn

+0

質問に追加 – rrrfusco

答えて

2

randTimeout()を1回だけ呼び出すために発生します。毎回計算されているわけではありません。あなたの間隔が指定された配列からランダムな間隔で実行したい場合は、あなたがsetTimeoutを利用することができ

var timeout = randTimeout(); 
setInterval(function() { 
    // ... 
}, timeout); 

:あなたのコードは次のようにある

var timer, prevDate = new Date(), hitsLeft = 10; 
 

 
function getRandomInt(min, max) { 
 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
 
} 
 

 
function randTimeout() { 
 
    var timeArr = [100, 200, 300, 400, 500, 600]; 
 
    var randInt = getRandomInt(0, timeArr.length); 
 
    var timeOut = timeArr[randInt]; 
 

 
    return timeOut; 
 
} 
 

 
function tick() { 
 
    if (hitsLeft === 0) { 
 
    console.log("Complete."); 
 
    timer = null; 
 
    return; 
 
    } 
 
    
 
    // Do whatever you need here. I just measure the passed time for demo 
 
    var currDate = new Date(); 
 
    console.log("Passed time: " + (currDate - prevDate) + " ms (" + hitsLeft + " hits left)"); 
 
    prevDate = currDate; 
 

 
    // Here, you call tick() again, with random timeout 
 
    hitsLeft--; 
 
    timer = setTimeout(tick, randTimeout()); 
 
} 
 

 
tick();

関連する問題