• ベストアンサー

setIntervalの間隔を途中で変更できますか

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

よく考えたら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>

webama_fk
質問者

お礼

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

その他の回答 (2)

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

そういうときはsetTimeoutを使う いちいちclearするとか変

webama_fk
質問者

お礼

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

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

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>

webama_fk
質問者

お礼

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

関連するQ&A

  • jsのsetInterval、間隔を動的に変更

    株チャートのリアルタイム表示をjsで実装しています 株データは時間別に2種類あります ・1つは、1分足ファイル。1分ごとに1件のデータです。 ・2つ目は、約定単位。時間は関係なく約定するごとに1件のデータを持ちます ファイル構成は、 日付、時間(h/m/s)、始値、高値、安値、終値 です。 ファイルを読み込んで配列に格納。 それをsetIntervalで間隔をとりながら、 1分足チャート、約定単位チャートの2つを同時表示しています。 問題: うまく2ファイルを同期させることができない 約定ファイルの場合、1分間で10件の場合もあれば、100件のときもあります。 それを1分足チャートの規則的な表示間隔に合わせて、 約定チャートの表示速度をsetIntervalで調整できないかと思案しています。 setIntervalの時間間隔を「動的に変更すること」で対処できないかと考えていますが、 そのようなことは可能なのでしょうか? よろしくご教授ください。

  • jQueryで背景画像と複数画像を変更

    jqueryで、divのボックス全体をリンクにし、マウスオーバーでdiv内の画像2点とdivの背景画像を変更したいと考えております。 <div class="linkbox">  <img src="image01.gif">  <img src="image02.gif"> </div> マウスオン用の画像は image01_on.gif image02_on.gif bg01_on.gif と、統一して「_on」をつけております。 マウスオーバーで背景を変更する方法とマウスオーバーで画像を変更する方法とボックス全体をリンクにする方法はそれぞれ見つけたのですが、うまく組み合わせることができません… 何か解決策がございましたら教えてください。 よろしくお願いいたします。

  • 【jQuery】setInterval

    jqueryの初心者です。 3つの画像を3秒間隔でクロスフェードさせ、それを繰り返したいのですが setIntervalの使い方が違うのか、思うような動きになりません。 何が原因なのかと、無駄な部分があると思いますので なるべくシンプルで初心者レベルのコードを教えて頂きたいです。 宜しくお願いします。 $(function(){ setInterval(function(){ setTimeout(function(){ $(".photo-1").fadeOut(1000); },3000); setTimeout(function(){ $(".photo-2").fadeIn(1000); },3000); setTimeout(function(){ $(".photo-2").fadeOut(1000); },6000); setTimeout(function(){ $(".photo-3").fadeIn(1000); },6000); setTimeout(function(){ $(".photo-3").fadeOut(1000); },9000); setTimeout(function(){ $(".photo-1").fadeIn(1000); },9000); },3000); }); <div id="photo-box"> <p class="photo-1"><img src="img/01.jpg" width="500" height="150" alt="" /></p> <p class="photo-2"><img src="img/02.jpg" width="500" height="150" alt="" /></p> <p class="photo-3"><img src="img/03.jpg" width="500" height="150" alt="" /></p> </div>

  • 最適なsetInterval()の秒数について

    setIntervalを使い、一定時間マウス操作がない場合に location.hrefでログアウトする処理を行っていますが 1秒毎にチェックするより、5秒毎の方が軽いでしょうか? 又、1秒で指定した場合、画面描画に1秒以上かかる場合 動作がおかしくなったりするのでしょうか?

  • setTimeOutとsetInterval、どっちが良いのか

    最近、あらゆるところで動的なアニメーションを見ます。 例えば情報を表示するのにイーズイン・イーズアウトしたり画像をフェードさせたりといった視覚効果上のアクセント的に使われるものです。 これらはほんの短い間だけsetTimeOutかsetIntervalで関数を何度も実行して実現させていますが、この両者はどちらの方が優れているのでしょうか? プロのサイト数箇所でソースを覗いてみましたが、なぜかどこもsetTimeOutを使っていました。setIntervalではいけない理由があるのでしょうか?自分で実験してみたところ、両者に処理速度の差はほとんど見られませんでした(そのごくわずかな違いについて言えばいつもせtTimeOutが勝ちますが)。

  • jQueryでふたつの動作をさせたいのですが?

    jQueryでふたつの動作をさせたいのですが、適用のしかたがわかりません。 詳しい方、教えてください。 ■その1:ページのトップに戻す http://iuser.jp/webjin/archives/2009/11/jquery-scroll-to-top-control.html この動作単独では動きました。 ■その2:マウスオーバーで画像を変更 http://www.webcreatorbox.com/tech/jquery-tips20/ その1で、プラグインのscrolltopcontrol.jsで指示する矢印画像:scrollup.gif に、 その2のマウスオーバーをかけたいのです。 その2のマウスオーバーは、<body>内に実存する画像に対応するようになっていて、 scrolltopcontrol.js内に書かれている画像に、指示すにはどうしたら良いのかわかりません。 また、この方法ではできないのなら、「その1:ページのトップに戻す」を生かして、そのボタンに マウスオーバーをかける他の方法を教えてください。

  • マウスホバーで画像を徐々に変更させるには

    画像をデュレーションなしで切り替えるのはattrメソッドでできますが その動作にさらにデュレーションを追加させるにはどういうメソッドを使用すれば 良いのでしょうか? javascriptかもしくはjQueryのメソッドにそういったメソッドはありませんでしょうか? javascriptのsetInterval()とclearInterval()あたりを使えばできるのでしょうか? animateメソッドでは数値をいじれるプロパティしか変更できないので 画像変更は無理ということで 頭を抱えてます。

  • jQueryでホバーされていない要素を半透明にする

    http://www.skuare.net/test/jopacity_show.html 下記のようにスクリプトがありますが、いまいちわかりません。 画像の場合 <li><img src=hoge.gif title="menu 1"></li>でよろしいのでしょうか? <ul id="menu"> <li>menu 1</li> <li>menu 2</li> <li>menu 3</li> <li>menu 4</li> </ul> 「menu 1」にマウスオーバーされた際に、ほかの2-4が半透明になるイメージです。 まずはjQueryからjquery.jsをダウンロードします。 その後、以下のようなscriptを記述します。 <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#menu').children().hover(function() { //#menuの子要素にマウスオーバーした時の処理 $(this).siblings() //その要素の兄弟要素をすべて取ってきて .stop().fadeTo(500,0.5); //500ミリ秒かけて、opacity0.5まで変化させます }, function() { //マウスアウトの処理 $(this).siblings() .stop().fadeTo(500,1); //戻します }); }); </script>

  • jquryを利用した画像切り替え

    jqury(1.3)を利用しマウスオーバー,アウトで画像切り替えを行おうとしています。 マウスオーバーで特定の箇所に画像入れ替えする事はできたのですがマウスアウトで最初の画像に 戻すにはどうすればいいのでしょうか?具体的には・・・ <div><img id="target" src="最初の画像" /></div> <div class="thumbnail"> //以下の画像はマウスオーバーでtargetに拡大表示、マウスアウトで拡大画像を消し最初の画像に戻したい <a href="1の拡大"><img src="1の縮小" /></a> <a href="2の拡大"><img src="2の縮小" /></a> <a href="3の拡大"><img src="3の縮小" /></a> </div> という具合です。jsは以下のようにしたところマウスオーバーで切り替えは可能になったのですが戻すことができない状態です。 .hover( function(){// マウスオーバー時 $(this).fadeTo(200, 1.0); var changeSrc = $(this).attr("href"); $("#target").attr("src", changeSrc); }, function(){// マウスアウト時 $(this).fadeTo(500, 0.8); //ここで戻す処理をすると思うのですが方法がわかりません } ) 詳しい方がいらっしゃいましたら宜しくお願い致します。

  • マウスオーバーの合体

    マウスオーバーのプルダウンメニューと マウスオーバー画像変更スクリプトを組み合わせることは可能なのでしょうか? イメージとしては所期画面に画像Aがあり、マウスを載せると画像Aが画像Bになり、 更に画像Bの下にプルダウンメニューが表示されるイメージです。 尚、現在は以下の組み合わせがうまくいかない為(不可能?) 個々にスクリプトを記載しておきます。 ↓↓↓↓↓↓マウスオーバーのプルダウンメニュー↓↓↓↓↓↓ <html> <head> <script language="JavaScript"><!-- vType = ["hidden","visible"]; function pdMenu(mName) { Menu = document.all[mName].style; Menu.visibility = vType[Menu.visibility.indexOf("hidden") + 1]; } // --></script> </head> <body> <img src="main.png" onMouseover="pdMenu('Menu')"><br> <div id="Menu" style="visibility:hidden" onMouseout="pdMenu('Menu')"> <a href="http://www.yahoo.co.jp/" ><img src="sub01.png" border="0"></a><br> <a href="http://www.google.co.jp/"><img src="sub02.png" border="0"></a><br> </div> </body> </html> ↑↑↑↑↑↑マウスオーバーのプルダウンメニュー↑↑↑↑↑↑ ↓↓↓↓↓↓マウスオーバー画像変更スクリプト↓↓↓↓↓↓ <img border="0" src="main.png" onmouseover="this.src='main2.png'" onmouseout="this.src='main.png'"> ↑↑↑↑↑↑マウスオーバー画像変更スクリプト↑↑↑↑↑↑

専門家に質問してみよう