2017-02-26 10 views
-4

私はここに尋ねる前にこの多くの時間を解決する方法を探していると誓っていますが、いくつかのコードを見つけましたが、何が必要なのかはまだまだありません。ランダムなスタイル...ボタンをクリックすると、次のコードが開始されます。Javascriptでの実行をどのように遅延させるのですか?

function roll(){ 
    for (i = 0; i < 4; i++) { 
     setInterval(function(){ 
     res = Math.floor(Math.random() * 10) + 1; 
     /*document.getElementById("slot-" + res).style.border = "5px solid red"; 
     document.getElementById("slot-" + res).style.color = "red";*/ 
     document.getElementById("slot-" + res).className = "col-sm-2 slot-active"; 
     }, 500); 
     document.getElementById("slot-" + res).className = "col-sm-2 slot"; 
    } 
}; 

それはループの後の行で、私はそれはの外観を与えるように、元の框を置くふりそのボックスに1と10と変更スタイルクラスの間でランダムに選択し...そう...無作為な選択...しかし、私はinmediの中で実行し、何も起こっていないように見えるforループの中に入れれば実行しません...私はJavascriptのnoobと私はこれを学ぶために練習しようとしています!あなたの助けに!...

+2

あなたの実際の要件は 'setInterval'と内部のコード内のコードが繰り返し無限におき1/2秒を実行する前の最後の行が実行さ – pranavjindal999

+0

明確ではありません。いくつかのチュートリアルを調べてください – charlietfl

答えて

0

setTimeout(function(){dosomething}、timeout)、btwを使うことができます。関数が実際に実行されているかどうかを確認するためにconsole.log( 'something')を追加してください。

btw。インターバルを使用している場合は、forverを実行したくない場合はキャンセルする必要があるかもしれないことを覚えておいてください。また、処理をいつ行うかについての条件付きで反復関数(自身を呼び出す関数)を使うこともできます。

btw2。あなたがそれを取り消すことができるように、あなたが間隔を作成するたびにそれをいくつかの変数または何かに割り当ててください!

+0

ありがとう、あなたは私に言ったタイムアウトオプション付きの別の機能を追加...それは完璧に働いた!今私はその笑を停止する方法を見つける必要があります! – Brlesskoin

+0

こんにちは、変数にsetTimeoutに代入するだけです。var something = setTimeout()、後で次のようにすることができます:var myVar; function myFunction(){ myVar = setTimeout(function(){alert( "Hello");}; 3000); } function myStopFunction(){ clearTimeout(myVar); } –

+0

したがって、基本的にはclearTimeout(variableThatSetTimeoutWasAssignedTo) –

1

あなたがランダムに選択されたクラスを設定しますするsetIntervalを作成し、このように言った区間の実行、何かを終了するのsetTimeoutを持つことができます。https://jsfiddle.net/canastro/xxdbjm4n/1/

const refreshIntervalId = setInterval(() => { 
    $('.selected').removeClass('selected'); 
    const res = Math.floor(Math.random() * 10) + 1; 
    $(`.slot-${res}`).addClass('selected'); 
}, 500) 

setTimeout(() => { 
    clearInterval(refreshIntervalId); 
}, 3000); 
0

あなたの答えはthis.you必要性のようにする必要がありますjavascript変数のスコープを参照してください。

function roll(){ 
 
    
 
    for (i = 0; i < 4; i++) { 
 
     var res = Math.floor(Math.random() * 10) + 1; 
 
     function active(res){ 
 
     setTimeout(function(){ 
 
     document.getElementById("slot-" + res).className = "col-sm-2 slot-active"; 
 
     }, 500); 
 
     document.getElementById("slot-" + res).className = "col-sm-2 slot"; 
 
     } 
 
     active(res); 
 
    } 
 
};
div{ 
 
width:50px; 
 
height:50px; 
 
background:#ccc; 
 
float:left; 
 
margin:5px; 
 
} 
 
.slot{ 
 
background:#0f0; 
 
} 
 
.slot-active{ 
 
background:#f00; 
 
}
<button onclick="roll()" style="display:block;">roll</button> 
 
<div id="slot-1"></div> 
 
<div id="slot-2"></div> 
 
<div id="slot-3"></div> 
 
<div id="slot-4"></div> 
 
<div id="slot-5"></div> 
 
<div id="slot-6"></div> 
 
<div id="slot-7"></div> 
 
<div id="slot-8"></div> 
 
<div id="slot-9"></div> 
 
<div id="slot-10"></div>

関連する問題