質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

5023閲覧

javascriptでsetintervalを停止・再開する方法

m418k810f

総合スコア3

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/25 02:09

実現したいこと

javascriptでランダムにテキストを表示するサイトを作りたいと考えております。
「停止」ボタンの押すといったんsetintervalが停止し、再度ボタンを押すとsetintervalが再開するようにしたいのですが、clearintervalをどのように使えばいいのかがわかりません。
大変初歩的な質問なのは理解しております。ヒントだけでもよいので教えていただければと思います。

該当のソースコード

【HTML】 <html> <head> <meta charset="UTF-8"> <title>many article</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="text1"><script type="text/javascript" src="js1.js"></script></div> <button id="stop">停止</button> </body> </html> 【javascript】 window.addEventListener('DOMContentLoaded', ()=>{ const myMes=[ 'あああ', 'いいい', 'ううう', ]; setInterval(()=>{ const myRnd = Math.floor( Math.random() * myMes.length ); document.querySelector('#text1').textContent=myMes[myRnd]; },2000); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/01/25 02:16

ヒントだけだと「MDNリファレンスで機能概要確認してね」レベルの回答になるのですけど、それで良いのでしょうか。
m418k810f

2021/01/25 03:28

そのレベルですよね。すみません。もう少し勉強します。
m.ts10806

2021/01/25 03:42

いえ、質問内容からアドバイスの角度が見えなかったものですから、確認です。質問を編集してこの質問のゴールを明示してください。
guest

回答1

0

ベストアンサー

グローバル変数でタイマーIDを保持しておき、停止ボタンが押されたらclearInterval() すればよいです。

javascript

1// グローバル変数 2let intervalID = 0; 3 4... 5 6 // window.addEventListener() 内 7 // setInterval(...) の代わりにtoggleIntervalTimer()を呼ぶ 8 toggleIntervalTimer(); 9 10... 11 12 // ボタンが押されたときのコード 13function toggleIntervalTimer() { 14 if (intervalID > 0) { 15 clearInterval(intervalID); 16 intervalID = 0; 17 } else { 18 intervalID = setInterval(...); 19 } 20}

投稿2021/01/25 02:17

int32_t

総合スコア21008

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m418k810f

2021/01/25 03:27

ご回答ありがとうございます。 わからない部分が多いので、これから調べてみます! すみません。基本的なことなのですが、一つだけ教えていただけますか。 HTMLの「停止」ボタンとはどう関連付ければよいのでしょうか。。
aqqz

2021/01/25 03:57 編集

参考にどうぞ <script> var x=0; </script> <input type="button" value="Start" onclick="timerID=setInterval('aaa.innerText=x;x++',1000)"> <input type="button" value="Stop" onclick="clearInterval(timerID)"> <div id="aaa"></div>
int32_t

2021/01/25 04:08 編集

DOMContentLoadedリスナの中を、 toggleIntervalTimer(); document.querySelector('#stop').addEventListener('click', toggleIntervalTimer); とすれば良いかと。 (注: 完全なコードを書くのは故意に避けてます)
m418k810f

2021/01/25 21:28

重ね重ねすみません。 ありがとうございました。 勉強していきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問