目次
メソッドを使用して、あらゆる形式で理解できる文字列である必要があります。たとえば、
残りの時間を計算します
時間を利用可能な形式に変換します
次に、クロックデータを新しいdivに出力する関数を書き込みます:
時計をある日には、他の日ではなく、時計を表示したいとします。たとえば、今後の一連のイベントがあり、毎回クロックを手動で更新したくない場合があります。事前に物を配置する方法は次のとおりです。
に設定して、時計を非表示にします。次に、次のものを
次のステップ
javascriptで日時を使用することについてよく尋ねる質問
ホームページ ウェブフロントエンド jsチュートリアル たった18行のJavaScriptでカウントダウンタイマーを構築する

たった18行のJavaScriptでカウントダウンタイマーを構築する

Feb 10, 2025 am 10:59 AM

Build a Countdown Timer in Just 18 Lines of JavaScript

JavaScriptカウントダウンクロックの構築は、イベント、プロモーション、ゲームであれ、必要になることがあります。プラグインに頼らずに、ネイティブJavaScriptを使用してクロックを構築できます。多くの優れたクロックプラグインがありますが、ネイティブJavaScriptを使用することには次の利点があります。

    コード軽量、ゼロ依存関係。
  • ウェブサイトは、外部スクリプトやスタイルシートをロードせずにパフォーマンスを向上させます。
  • より多くの制御があれば、ニーズに合わせてプラグインを曲げようとすることなく、クロックの動作を正確に制御できます。
ここに、たった18行のJavaScriptコードで独自のカウントダウンクロックを作成する方法があります:

JavaScriptの詳細な理解を得るには、本「JavaScript:Novice to Ninja、第2版」を読んでください。

キーポイント

    依存関係なしでJavaScriptを使用して軽量で効率的なカウントダウンクロックを構築でき、外部スクリプトやスタイルシートをロードせずにパフォーマンスとコントロールが向上します。
  • このプロセスには、有効な終了日の設定、残りの時間の計算、使用可能な形式に変換され、クロックデータの再利用可能なオブジェクトとして出力し、ページにクロックを表示し、ゼロに到達したときに停止することが含まれます。
  • 最初の遅延を削除し、クロック内の数字のみを更新してスクリプト効率を向上させ、必要に応じて主要なゼロを追加することにより、クロックディスプレイを最適化できます。
  • 一部のユースケースでは、クロックを自動的にスケジュールしたり、ユーザーが到着した特定の時間のタイマーを設定したり、クッキーでクロックの終了時間を節約してページ全体でクロックの進行を維持したりするなど、クロックを拡張できます。
  • 覚えておくべき重要な警告の1つ:JavaScriptの日付と時間はユーザーのコンピューターから取られます。つまり、ユーザーはコンピューターの時間を変更することでJavaScriptクロックに影響を与えることができます。非常に敏感な状況では、サーバーから時間を取得する必要がある場合があります。
基本的なクロック:特定の日付または時刻

へのカウントダウン

基本的なクロックの作成には、次の手順が含まれます

有効な終了日を設定します。
  • 残りの時間を計算します。
  • 時間を利用可能な形式に変換します。
  • 再利用可能なオブジェクトとしての出力クロックデータ。
  • ページに時計を表示し、ゼロに到達したときにクロックを停止します。
  • 有効な終了日を設定
最初に、有効な終了日を設定する必要があります。これは、JavaScriptの

メソッドを使用して、あらゆる形式で理解できる文字列である必要があります。たとえば、

ISO 8601フォーマット:Date.parse()

短い形式:

const deadline = '2015-12-31';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

または長い形式:

const deadline = '31/12/2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

各形式を使用すると、正確な時間とタイムゾーンを指定できます(または、ISO日付の場合、UTCからオフセットを指定します)。たとえば、

const deadline = 'December 31 2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
この記事では、JavaScriptの日付形式の詳細を読むことができます。

残りの時間を計算します

次のステップは、残りの時間を計算することです。特定の終了時間を表す文字列を受け入れる関数を記述する必要があります(上記のように)。次に、その時間と現在の時間の違いを計算します。以下に示すように:

const deadline = '2015-12-31';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最初に、締め切り前の残りの時間を節約する変数totalを作成します。 Date.parse()関数は、時間文字列をミリ秒単位で値に変換します。これにより、互いに2回減算し、2つの間に時間を取得できます。

const deadline = '31/12/2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

時間を利用可能な形式に変換します

ここで、ミリ秒を日数、時間、分、秒に変換したいと考えています。例として数秒かかりましょう:

const deadline = 'December 31 2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ここで何が起こっているのか分解しましょう。

  1. ミリ秒を1000から秒分割します:(t/1000)
  2. 総秒数を60で割って、残りを取得します。すべての秒は必要ありません。分の後の残りの秒を計算する必要があります:(t/1000)%60
  3. それを最も近い整数に丸めます。これは、2番目の部分の分数部分ではなく、秒数が必要なためです。 Math.floor( (t/1000) % 60 ) このロジックを繰り返して、ミリ秒を数分、時間、日に変換します。
  4. 再利用可能なオブジェクトとしての出力クロックデータ

日、時間、数分、秒を準備するとき、再利用可能なオブジェクトとしてデータを返すことができます:

このオブジェクトを使用すると、関数を呼び出して計算された値を取得できます。これが残りの議事録を取得する方法の例です:

const deadline = 'December 31 2015 23:59:59 GMT+0200';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
便利ですか?

時計を見せて、ゼロに達したときに停止します
function getTimeRemaining(endtime){
  const total = Date.parse(endtime) - Date.parse(new Date());
  const seconds = Math.floor( (total/1000) % 60 );
  const minutes = Math.floor( (total/1000/60) % 60 );
  const hours = Math.floor( (total/(1000*60*60)) % 24 );
  const days = Math.floor( total/(1000*60*60*24) );

  return {
    total,
    days,
    hours,
    minutes,
    seconds
  };
}
ログイン後にコピー
ログイン後にコピー

これで、残りの日、時間、分、秒を出力する関数があり、時計を構築できます。まず、クロックを保存するために次のHTML要素を作成します。

次に、クロックデータを新しいdivに出力する関数を書き込みます:

この関数は2つのパラメーターを取ります。それらは、私たちの時計とカウントダウンの終了時間を含む要素のIDです。関数内では、a
const total = Date.parse(endtime) - Date.parse(new Date());
ログイン後にコピー
ログイン後にコピー
変数を宣言し、それを使用してクロックコンテナdivへの参照を保存します。これは、DOMを照会し続ける必要がないことを意味します。

次に、
const seconds = Math.floor( (t/1000) % 60 );
ログイン後にコピー
ログイン後にコピー
を使用して匿名関数を1秒あたり実行します。この関数は次のことを行います:

clock

残りの時間を計算します。

setInterval残りの時間をdivに出力します。

    残りの時間がゼロに達した場合は、時計を停止します。
  • この時点で、以下に示すように、残りの唯一のステップはクロックを実行することです。
  • おめでとうございます!基本的なクロックを持つために、JavaScriptコードの18行しかありません。
  • 時計を表示する準備

クロックスタイルを設定する前に、少し改善する必要があります。

  • 最初の遅延を削除して、すぐにクロックが表示されるようにします。
  • クロックスクリプトをより効率的にして、クロック全体を継続的に再構築しないようにします。
  • 必要に応じて、主要なゼロを追加します。
初期遅延を削除

時計では、

を使用してディスプレイを1秒ごとに更新します。ほとんどの場合、これは問題ありませんが、最初は2回目の遅延があります。この遅延を削除するには、間隔が開始される前にクロックを1回更新する必要があります。 setInterval

渡された匿名関数を

に移動して、独自の個別の関数に移動しましょう。この関数をsetIntervalに名前を付けることができます。 updateClock関数を外に一度呼び出して、setInterval内部で再度呼び出します。このようにして、時計は遅滞なく表示されます。 updateClock setInterval javaScriptで、次のものを置き換えます

以下を使用してください

const deadline = '2015-12-31';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
クロックの継続的な再構築を避けてください

クロックスクリプトをより効率的にする必要があります。時計全体を毎秒再構築するのではなく、時計の数字のみを更新したいと考えています。これを行う1つの方法は、各番号を
const deadline = '31/12/2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
タグ内に配置し、それらの内容のみを更新することです。

これはhtml:

です <span> <span>これらの要素への参照を取得しましょう。

変数を定義した後、次のコードを追加します

const deadline = 'December 31 2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次に、数字のみを更新するために

関数を変更する必要があります。新しいコードは次のようになります:clock

const deadline = 'December 31 2015 23:59:59 GMT+0200';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
先頭のゼロを追加します

updateClockクロックが毎秒再構築されなくなったので、もう1つやるべきことがあります。主要なゼロを追加します。たとえば、クロックには7秒は表示されませんが、07秒を表示します。簡単な方法は、数字の先頭に「0」文字列を追加してから、最後の2桁を切り取ることです。

たとえば、
function getTimeRemaining(endtime){
  const total = Date.parse(endtime) - Date.parse(new Date());
  const seconds = Math.floor( (total/1000) % 60 );
  const minutes = Math.floor( (total/1000/60) % 60 );
  const hours = Math.floor( (total/(1000*60*60)) % 24 );
  const days = Math.floor( total/(1000*60*60*24) );

  return {
    total,
    days,
    hours,
    minutes,
    seconds
  };
}
ログイン後にコピー
ログイン後にコピー
主要なゼロを「秒」値に追加するには、以下を変更します。

これについては

必要に応じて、主要なゼロを数分と時間に追加することもできます。ここまで来たら、おめでとうございます!これで表示できます。

const total = Date.parse(endtime) - Date.parse(new Date());
ログイン後にコピー
ログイン後にコピー
注:Codepenの「Rerun」をクリックしてカウントダウンを開始する必要がある場合があります。

さらに一歩進んでください
const seconds = Math.floor( (t/1000) % 60 );
ログイン後にコピー
ログイン後にコピー

次の例は、一部のユースケースのクロックをスケーリングする方法を示しています。それらはすべて、上記の基本的な例に基づいています。

クロックを自動的にスケジュールします

時計をある日には、他の日ではなく、時計を表示したいとします。たとえば、今後の一連のイベントがあり、毎回クロックを手動で更新したくない場合があります。事前に物を配置する方法は次のとおりです。

クロックの

プロパティを

に設定して、時計を非表示にします。次に、次のものを

関数に追加します(

で始まる行の後)。これにより、クロックは

関数を呼び出した後にのみ表示されます:

display none次に、クロックが表示する日付範囲を指定できます。これにより、initializeClock変数:var clockを置き換えます

const deadline = '2015-12-31';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
アレイ内の各要素は、開始日と終了日を表します。上記のように、時間と時間ゾーンを含めることができますが、ここでは通常の日付を使用してコードを読み取り可能に保ちます。

schedule最後に、ユーザーがページを読み込むとき、指定された時間範囲内にあるかどうかを確認する必要があります。このコードは、以前の呼び出しを

関数に置き換える必要があります。

initializeClock

これで、手動で更新せずに時計を事前にスケジュールできます。必要に応じてコードを短くすることができます。読みやすさのために、コードを冗長にします。
const deadline = '31/12/2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ユーザーが到着したときに10分間のタイマーを設定します

ユーザーが到着したり、特定のタスクを開始したりしてから、特定の時間の間カウントダウンを設定する必要がある場合があります。ここには10分間のタイマーを設定しますが、必要な時間を使用できます。

変数を次のものに置き換える必要があります。

このコードは現在の時間を取得し、10分を追加します。値はミリ秒に変換されるため、一緒に追加して新しい締め切りに変換できます。 deadline

ここで、ユーザーが到着したときから10分後にカウントダウンする時計があります。さまざまな時間を試してみてください。
const deadline = 'December 31 2015';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ページ全体でクロックが進行します

現在のページだけでなく、時計の状態を保存する必要がある場合があります。ウェブサイト全体で10分間のタイマーを設定する場合は、ユーザーが別のページに移動したときにリセットする必要はありません。

1つの解決策は、クッキーのクロックの終了時間を節約することです。このようにして、新しいページに移動しても、終了時間を10分までリセットしません。

これはロジックです:

締め切りがCookieに記録されている場合、締め切りが使用されます。

Cookieが存在しない場合、Cookieに新しい期限が設定され、保存されます。

    これを達成するには、
  1. 変数を次のものに置き換えます。
  2. このコードでは、Cookieと正規表現を使用します。どちらも別々のトピックです。したがって、私はここで詳細に説明しません。注意すべきことの1つは、
  3. を実際のドメイン名に変更する必要があることです。

クライアント時間に関する別の重要な警告deadline

javaScriptの日付と時刻は、ユーザーのコンピューターから取得されます。これは、ユーザーがコンピューターの時間を変更することにより、JavaScriptクロックに影響を与えることができることを意味します。ほとんどの場合、これは問題ではありません。しかし、いくつかの非常に繊細な状況では、サーバーから取得するために時間が必要です。これは、このチュートリアルの範囲を超えたPHPまたはAjaxで実行できます。
const deadline = 'December 31 2015 23:59:59 GMT+0200';
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

サーバーから時間を取得した後、このチュートリアルで同じ手法を使用して処理できます。 .yourdomain.com

要約

この記事の例を完了した後、ごくわずかなネイティブJavaScriptコードで独自のカウントダウンタイマーを作成する方法がわかりました!基本的なカウントダウンクロックを作成し、効率的に表示する方法を学びました。また、スケジューリング、絶対時間対相対的な時間、およびページとウェブサイトのアクセスの間の状態を保存するためのCookieの使用など、いくつかの有用な追加機能も取り上げました。

次のステップ

クロックコードを使用してみてください。いくつかの創造的なスタイルや新機能(ボタンの一時停止や復元など)を追加してみてください。その後、クールな時計の例を共有したい場合は、フォーラムでお知らせください。

javascriptで日時を使用することについてよく尋ねる質問

JavaScriptで現在の日付と時刻を取得するにはどうすればよいですか? Dateオブジェクトを使用して、現在の日付と時刻を取得できます。パラメーターなしでDateの新しいインスタンスを作成するだけで、現在の日付と時刻を表します。

JavaScriptの一般的な日付と時刻の操作は何ですか?一般的な操作には、日付のフォーマット、解析日文字列、時間間隔の計算、時間の追加または減算、および日付の比較が含まれます。

JavaScriptのタイムゾーンに対処するための推奨方法は何ですか?タイムゾーンの問題を回避するために、UTC時間をできるだけ使用するのが最善です。ユーザーに時間を表示するときは、toLocaleStringメソッドを使用し、timeZoneオプションを使用して目的のタイムゾーンを指定することを検討してください。

JavaScriptの2つの日付の違いを計算する方法は? 2つのDateオブジェクトを2つのオブジェクトを引いて、ミリ秒で時間間隔を取得し、数学操作を使用して日数、時間、議事録などに変換できます。

JavaScriptで日付を簡単に操作できますか?はい、JavaScriptは、日付間隔を追加および減算する方法を提供します。 Dateオブジェクトには、日付操作に使用されるsetFullYearsetMonthsetDateなどのメソッドがあります。

以上がたった18行のJavaScriptでカウントダウンタイマーを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Zustand非同期操作:UseStoreが取得した最新の状態を確保する方法は? Zustand非同期操作:UseStoreが取得した最新の状態を確保する方法は? Apr 04, 2025 pm 02:09 PM

Zustand非同期操作のデータの更新問題。 Zustand State Management Libraryを使用する場合、非同期操作を不当にするデータ更新の問題に遭遇することがよくあります。 �...

See all articles