• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:再開ボタンを連打するとずっとスライドショーが変)

スライドショー再開ボタンの連打で動作がおかしくなる問題

このQ&Aのポイント
  • スライドショー再開ボタンを連打すると、スライドショーが超高速で動き続けてしまう問題が発生しています。
  • 実務ではこの問題に対処する必要はありません。
  • 連打をしても問題が発生しないようにする方法はありません。

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

  • ベストアンサー
noname#262292
noname#262292
回答No.1

再開ボタンをクリックする度にsetIntervalによるタイマーが生成されるため、 複数のタイマーがそれぞれ稼動している状態になります。 そのため、各タイマーがそれぞれのタイミングでchangePage()を呼び出すため、 スライドが高速で動いているものと思われます。 連打をしても動かないようにする方法は、 タイマーを起動の状態を変数で管理するのがよいかと思います。 例: var isStart = false; $('#js-play-btn').click(function() { if (isStart == false) { startTimer(); isStart = true; } }); > 実務ではそこまで対処する必要はありますか? > そこまでする人はふつういないので、このような場合は製作者側の問題でないといってもよいのでしょうか? あたなの会社の方針次第です。 私なら開発者として恥ずかしいので修正します。

noname#226032
質問者

お礼

ありがたいです。 //停止した場合の再開ボタンのJS $('#js-play-btn').click(function() { startTimer(); }); /* /オプションを足す場合はここへ記載 */ var isStart = false; $('#js-play-btn').click(function() { if (isStart == false) { startTimer(); isStart = true; } }); としましたがやはり連打するととてつもないスピードで変更するようになります。 こちらは'#js-play-btnをクリックしたときにisStart がfalseだったらタイマーを再開して、turueにfalseを変更するということをやっているのでしょうか? ただisStartという変数や内容はここで定義するまえには存在しないものですよね。 この中身がtrueかfalseかはどこで決まっているのでしょうか? またfalseが停止中の時で、trueが再生中を示しているのでしょうか? これは仕様で決まっているのですか?

その他の回答 (1)

noname#262292
noname#262292
回答No.2

isStartはご自身で適切な場所に配置してください。 タイマーを稼動する際に呼び出す関数のなかでtrueを、 タイマーを停止する際に呼び出す関数のなかでfalseを設定されれば良いかと思います。 「連打するととてつもないスピードで変更する」 こちらの原因については理解、および確認をされたのでしょうか? 原因を理解されていないと、修正内容についても理解できないのではないでしょうか? ChromeのDeveloper Tools(F12キーで表示)等を使って、 実際にどのような動きをしているのか、確認された方が良いかと思います。 JavascriptのChromeでのデバッグ方法 http://qiita.com/snoguchi/items/8f6bb62a3166eca23ac3

参考URL:
http://qiita.com/snoguchi/items/8f6bb62a3166eca23ac3

関連するQ&A