プロが教えるわが家の防犯対策術!

jQueryを使って、画像にマウスオーバーしたら、画像のsrc値を切り替えて、あたかもパタパタ回っているような処理を加えています。
setIntervalを使って50msごとに切り替えています。
この50msを途中で例えば30msとか200msに変更することは可能でしょうか。

途中で回転速度を変えたい場合、どのような作法がありますか。

A 回答 (3件)

よく考えたらsetTimeoutではなくsetIntervalなので前回の記述は


完全におかしいですね、申し訳ないです
おっしゃるとおり、クリアして再実行で良いかと思います

<script>
var c=1;
var timer;
doTimer(1000);
function doTimer(t){
if(timer) clearInterval(timer);
timer=setInterval(function(){document.getElementById("test").innerHTML=c++;},t);
}
</script>
<div id="test"></div>
<input type="button" value="t=30" onclick="doTimer(30);"><br>
<input type="button" value="t=50" onclick="doTimer(50);"><br>
<input type="button" value="t=200" onclick="doTimer(200);"><br>
<input type="button" value="t=1000" onclick="doTimer(1000);"><br>
    • good
    • 0
この回答へのお礼

ご丁寧に補足頂きありがとうございます!

お礼日時:2012/10/16 12:47

そういうときはsetTimeoutを使う


いちいちclearするとか変
    • good
    • 0
この回答へのお礼

あ、そうなんですね。勉強になります。どうもです。

お礼日時:2012/10/16 17:23

1ミリ秒でまわして、カウンタの処理をいれてみては?



<script>
var c=1;
var t=1000;
var counter=0;
var timer=setInterval(function(){if(counter==0){document.getElementById("test").innerHTML=c++;};counter=counter<t?counter+1:0;},1);
</script>
<div id="test"></div>
<input type="button" value="t=30" onclick="t=30"><br>
<input type="button" value="t=50" onclick="t=50"><br>
<input type="button" value="t=200" onclick="t=200"><br>
<input type="button" value="t=1000" onclick="t=1000"><br>
    • good
    • 0
この回答へのお礼

センスのないロジックになってしまいそうですが、カウンタを回して、一定値に達したら、現在動いているsetIntervalをclearして、インターバル値を広げたsetIntervalを発動させてみます。

アドバイスありがとうございます!

お礼日時:2012/10/16 11:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!