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

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

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

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

Q&A

解決済

1回答

854閲覧

javascriptカウントダウンを設置したい

tokiki

総合スコア1

JavaScript

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

0グッド

0クリップ

投稿2022/11/21 09:19

編集2022/11/22 06:56

前提

サイトにカウントダウンを設置したいのですが、終了時間を11/28 00:00:00で設定したいのですが、
今は月末に設定されております。
以下のURLを見て設定いたしました。
https://mgmgblog.com/?p=2595

該当のソースコード

html

1<div id="countdownArea" class="countdown"> 2 <span id="countdown-day"></span>3 <span id="countdown-hour"></span>時間 4 <span id="countdown-min"></span>5 <span id="countdown-sec"></span>6</div>

※3行目を書き換えればよいようなのですが、うまくいきませんでした。

js

1let countdown = setInterval(function(){ 2 const now = new Date() //今の日時 3 const target = new Date(now.getFullYear(), now.getMonth() + 1, 0,'23','59','59') //ターゲット日時を取得 4 const remainTime = target - now //差分を取る(ミリ秒で返ってくる 5 6 //指定の日時を過ぎていたら処理をしない 7 if(remainTime < 0) return false 8 9 //差分の日・時・分・秒を取得 10 const difDay = Math.floor(remainTime / 1000 / 60 / 60 / 24) 11 const difHour = Math.floor(remainTime / 1000 / 60 / 60 ) % 24 12 const difMin = Math.floor(remainTime / 1000 / 60) % 60 13 const difSec = Math.floor(remainTime / 1000) % 60 14 15 //残りの日時を上書き 16 document.getElementById("countdown-day").textContent = difDay 17 document.getElementById("countdown-hour").textContent = difHour 18 document.getElementById("countdown-min").textContent = difMin 19 document.getElementById("countdown-sec").textContent = difSec 20 21 //指定の日時になればカウントを止める 22 if(remainTime < 0) clearInterval(countdown) 23 24}, 1000) //1秒間に1度処理

↓に変更を加えました。

以下のようにしてみたのですが、終了しましたに書き換わりませんでした。
時計表示がそのまま、表示に残っていおり、
「終了しました」は、表示されない状況です。

cssをあてるために、ほんの少しマークアップを変更したことが原因でしょうか。。。

HTML

1<div id="countdownArea" class="countdown"> 2終了まであと...<br><br> 3<span class="time_set"><span id="countdown-day"></span>Days</span><span class="point">:</span> 4<span class="time_set"><span id="countdown-hour"></span>Hours</span><span class="point">:</span> 5<span class="time_set"><span id="countdown-min"></span>Mins</span><span class="point">:</span> 6<span class="time_set"><span id="countdown-sec"></span>Secs</span><span class="point">:</span> 7</div>

javascript

1let countdown = setInterval(function(){ 2const now = new Date() //今の日時 3const target = new Date(now.getFullYear(), 10, 23, 13, 38, 00); //ターゲット日時を取得 4const remainTime = target - now //差分を取る(ミリ秒で返ってくる 5 6//指定の日時を過ぎていたら処理をしない 7if(remainTime < 0) return false 8 9//差分の日・時・分・秒を取得 10const difDay = Math.floor(remainTime / 1000 / 60 / 60 / 24) 11const difHour = Math.floor(remainTime / 1000 / 60 / 60 ) % 24 12const difMin = Math.floor(remainTime / 1000 / 60) % 60 13const difSec = Math.floor(remainTime / 1000) % 60 14 15//残りの日時を上書き 16document.getElementById("countdown-day").textContent = difDay 17document.getElementById("countdown-hour").textContent = difHour 18document.getElementById("countdown-min").textContent = difMin 19document.getElementById("countdown-sec").textContent = difSec 20 21//指定の日時になったら、 22if (remainTime < 0) { 23// カウントを止めて 24clearInterval(countdown); 25// メッセージを表示する 26const countdownArea = document.getElementById('countdownArea'); // 追加 27countdownArea.innerHTML = '終了いたしました'; // 追加 28} 29 30}, 1000)//1秒間に1度処理

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

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

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

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

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

Cocode

2022/11/21 09:28 編集

コードはコードブロックにいれて記載いただくようお願いします🙇 バッククォートx3個で挟んだ中にコードを書きます。 ```html (ここにhtmlコードを書く) ``` ```javascript (ここにjavascriptコードを書く) ```
tokiki

2022/11/21 09:31

不慣れで申し訳ございません。 修正いたしました。
Cocode

2022/11/21 09:31

ありがとうございます!お手数をおかけしました🙇
tokiki

2022/11/21 09:41

出来ました!!! 11月は10なのですね。 初心者なもので、そんなことも分からず・・・ とても助かりました。 ありがとうございます!!大感謝です。
tokiki

2022/11/21 09:54

ベストアンサーを選んだあとですみませんが、もう一つ教えていただくことは可能でしょうか? 別スレッドを立てた方がよければ、そのようにいたします。 カウントダウン終了後に 「終了いたしました」 とメッセージを表示したい場合は、どのようにしたら良いでしょうか?
Cocode

2022/11/21 10:49

どこに表示したいのですかー?
tokiki

2022/11/22 00:44

お返事が遅れてすみません。 カウントダウンが終了したら、 カウントダウンの表示は消して、代わりに「終了いたしました」と表示させたいです。
guest

回答1

0

ベストアンサー

一ヶ所修正するだけでいけます。

javascript

1new Date(,,,,,);

※月は0月からはじまります。11月=10です。

修正箇所

javascript

1const target = new Date(now.getFullYear(), 10, 28, 00, 00, 00);

追加質問への回答

カウントダウン終了後に「終了いたしました」とメッセージを表示したい場合は、どのようにしたら良いでしょうか?

カウントを止めると同時に、HTMLを「終了しました」に書き換えてください。

javascript

1 //指定の日時になったら、 2 if (remainTime < 0) { 3 // カウントを止めて 4 clearInterval(countdown); 5 6 // メッセージを表示する 7 const countdownArea = document.getElementById('countdownArea'); // 追加 8 countdownArea.innerHTML = '終了いたしました'; // 追加 9 }

投稿2022/11/21 09:38

編集2022/11/22 03:32
Cocode

総合スコア2314

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

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

tokiki

2022/11/22 06:51

以下のようにしてみたのですが、終了しましたに書き換わりませんでした。 時計表示がそのまま、表示に残っていおり、 「終了しました」は、表示されない状況です。 cssをあてるために、ほんの少しマークアップを変更したことが原因でしょうか。。。 ```HTML <div id="countdownArea" class="countdown"> 終了まであと...<br><br> <span class="time_set"><span id="countdown-day"></span>Days</span><span class="point">:</span> <span class="time_set"><span id="countdown-hour"></span>Hours</span><span class="point">:</span> <span class="time_set"><span id="countdown-min"></span>Mins</span><span class="point">:</span> <span class="time_set"><span id="countdown-sec"></span>Secs</span><span class="point">:</span> </div> ``` ```javascript let countdown = setInterval(function(){ const now = new Date() //今の日時 const target = new Date(now.getFullYear(), 10, 23, 13, 38, 00); //ターゲット日時を取得 const remainTime = target - now //差分を取る(ミリ秒で返ってくる //指定の日時を過ぎていたら処理をしない if(remainTime < 0) return false //差分の日・時・分・秒を取得 const difDay = Math.floor(remainTime / 1000 / 60 / 60 / 24) const difHour = Math.floor(remainTime / 1000 / 60 / 60 ) % 24 const difMin = Math.floor(remainTime / 1000 / 60) % 60 const difSec = Math.floor(remainTime / 1000) % 60 //残りの日時を上書き document.getElementById("countdown-day").textContent = difDay document.getElementById("countdown-hour").textContent = difHour document.getElementById("countdown-min").textContent = difMin document.getElementById("countdown-sec").textContent = difSec //指定の日時になったら、 if (remainTime < 0) { // カウントを止めて clearInterval(countdown); // メッセージを表示する const countdownArea = document.getElementById('countdownArea'); // 追加 countdownArea.innerHTML = '終了いたしました'; // 追加 } }, 1000)//1秒間に1度処理 ```
Cocode

2022/11/22 09:21

今日は11月22日なので、コードではtargetは23日と書いてるから明日にならないと…?ではなく?
Cocode

2022/11/22 09:23 編集

あ!すみません!それから //指定の日時を過ぎていたら処理をしない if(remainTime < 0) return false これ削除してみてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問