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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2184閲覧

カウントダウンタイマーの終了の表示

bakio

総合スコア21

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/05/11 08:46

Yahoo!知恵袋回答より
上記リンクを参考にそのサイトにアクセスしたら開始されるカウントダウンタイマーを作成してみました。

こちらの方法ですと終了した際に -(マイナス表記)でまたカウントが始まってしまいます。
-1秒、-2秒、、、、と

ですので定めた時間で終了したら「終了しました」などのテキストを表示するようにしたいのですが
調べてもうまくできずでしたので詳しい方助けていただけると嬉しいです。

html

1 <div class="cdown" data-cdown-min="15"></div> 2

css

1 2 .cdown, 3 .cdown-done, 4 .cdown-loop { 5 font-size: 10vw; 6 color: #FFF484; 7 font-weight: bold; 8 position: relative; 9 top: 10vw; 10 left: 32vw; 11 width: 100%; 12 } 13

javascript

1 2 var cdown = new Object(); 3 cdown.elem = document.querySelectorAll(".cdown"); 4 cdown.tmr = new Array(); 5 cdown.getTime = function( I ){ 6 var attributes = cdown.elem[ I ].attributes; 7 for(var type, value, i=0;i<attributes.length;i++){ 8 type = attributes[ i ].name.match(/(^data-cdown-)(.+)/); 9 if( type ){ 10 value = parseInt( attributes[ i ].value, 10 ) || 0 ; 11 return ( type[2]=="min" ) ? value*60 : value ; 12 } 13 } 14 return null; 15 } 16 cdown.start = function( I ){ 17 var sec = cdown.getTime( I ); 18 if( sec==null ){ return } 19 var target = ( new Date() ).getTime()+( sec*1000 ); 20 cdown.tmr[ I ] = setInterval( function(){ 21 var now = ( new Date() ).getTime(); 22 var left = target - now; 23 var output = { 24 "min" : Math.floor( ( left%( 1000*60*60 ) )/( 1000*60 ) ), 25 "sec" : Math.floor( ( left%( 1000*60 ) )/( 1000 ) ), 26 "ms" : left%1000 } 27 cdown.elem[ I ].textContent = "" 28 +( "0"+output.min ).slice(-2)+" 分 " 29 +( "0"+output.sec ).slice(-2)+" 秒 " 30 +( "00"+output.ms ).slice(-2); 31}, 20 ); 32 } 33 window.addEventListener( "load", function(){ 34 for(var i=0;i<cdown.elem.length;i++){ cdown.start( i ) } 35 }, false ); 36

###わかったこと

cssの .cdown-loopを削除するとタイマー自体が機能しなくなってしまう

無知で素人ゆえに恐縮ですがお力いただけますと幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは、以下のコードでどうでしょうか?

Javascript

1window.addEventListener( 2 "load", 3 function () { 4 var cdown = new Object(); 5 cdown.elem = document.querySelectorAll(".cdown"); 6 cdown.tmr = new Array(); 7 cdown.getTime = function (I) { 8 var attributes = cdown.elem[I].attributes; 9 for (var type, value, i = 0; i < attributes.length; i++) { 10 type = attributes[i].name.match(/(^data-cdown-)(.+)/); 11 if (type) { 12 value = parseInt(attributes[i].value, 10) || 0; 13 return type[2] == "min" ? value * 60 : value; 14 } 15 } 16 return null; 17 }; 18 cdown.start = function (I) { 19 var sec = cdown.getTime(I); 20 if (sec == null) { 21 return; 22 } 23 var target = new Date().getTime() + sec * 1000; 24 cdown.tmr[I] = setInterval(function () { 25 var now = new Date().getTime(); 26 var left = target - now; 27 var output = { 28 min: Math.floor((left % (1000 * 60 * 60)) / (1000 * 60)), 29 sec: Math.floor((left % (1000 * 60)) / 1000), 30 ms: left % 1000, 31 }; 32 console.log(left); 33 if (left > 0) { 34 cdown.elem[I].textContent = "" + ("0" + output.min).slice(-2) + " 分 " + ("0" + output.sec).slice(-2) + " 秒 " + ("00" + output.ms).slice(-2); 35 } else { 36 cdown.elem[I].textContent = "終了しました"; 37 window.clearInterval(cdown.tmr[I]); 38 } 39 }, 20); 40 }; 41 for (var i = 0; i < cdown.elem.length; i++) { 42 cdown.start(i); 43 } 44 }, 45 false 46); 47

投稿2020/05/11 10:56

fake_shibe

総合スコア806

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

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

bakio

2020/05/11 14:40

fake_shibe様 ありがとうございます!無事解決できました。 お時間割いていただきありがとうございます!
guest

0

JavaScript PrimerとかでJavaScriptを勉強した方が良いです

ここで説明しても通じるように思えないのでサンプルを作りました
参考にどうぞ
https://jsfiddle.net/dusc5p03/

投稿2020/05/11 10:41

fijino

総合スコア136

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問