ホームページ  >  記事  >  ウェブフロントエンド  >  同時に複数の js ミリ秒カウントダウンの効果を説明する例_javascript スキル

同時に複数の js ミリ秒カウントダウンの効果を説明する例_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 15:21:591223ブラウズ

この記事の例では、js ミリ秒カウントダウンと同時エフェクトのコードを説明し、参考として皆さんと共有します。具体的な内容は次のとおりです。

レンダリング:

実装関数: 関数を呼び出し、HTML 要素の ID と期限 (UNIX タイムスタンプ) を渡し、ミリ秒単位の精度で現在の期限までのカウントダウンを HTML 要素に出力します。

レンダリングは次のとおりです:

<!DOCTYPE html>
<html>

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title></title>
    <style>
      div{
        width: 100%;
        height: 50px;
        margin-bottom: 5px;
        background: yellowgreen;
      }
    </style>
  </head>

  <body>
    
    <h2>毫秒的倒计时</h2>
    <div id="timer1"></div>
    <div id="timer2"></div>
    <div id="timer3"></div>
    <div id="timer4"></div>
    <script>
      var addTimer = function(){
        var list = [],
          interval;
          
        return function(id,timeStamp){
          if(!interval){
            interval = setInterval(go,1);
          }
          list.push({ele:document.getElementById(id),time:timeStamp});
        }
        
        function go() { 
          for (var i = 0; i < list.length; i++) { 
            list[i].ele.innerHTML = changeTimeStamp(list[i].time); 
            if (!list[i].time) 
              list.splice(i--, 1); 
          } 
        }

        //传入unix时间戳,得到倒计时
        function changeTimeStamp(timeStamp){
          var distancetime = new Date(timeStamp*1000).getTime() - new Date().getTime();
          if(distancetime > 0){ 
              //如果大于0.说明尚未到达截止时间       
            var ms = Math.floor(distancetime%1000);
            var sec = Math.floor(distancetime/1000%60);
            var min = Math.floor(distancetime/1000/60%60);
            var hour =Math.floor(distancetime/1000/60/60%24);
            
            if(ms<100){
              ms = "0"+ ms;
            }
            if(sec<10){
              sec = "0"+ sec;
            }
            if(min<10){
              min = "0"+ min;
            }
            if(hour<10){
              hour = "0"+ hour;
            }
            
            return hour + ":" +min + ":" +sec + ":" +ms;
          }else{
              //若否,就是已经到截止时间了
            return "已截止!"
          }  
        }        
      }();
      
      addTimer("timer1",1451923200);//1月5日00点,unix时间戳自己去百度一下,就有的
      addTimer("timer2",1451926800);//1月5日01点
      addTimer("timer3",1451930400);//1月5日02点
      addTimer("timer4",1452020400);//1月6日03点

    </script>
    
  </body>

</html>

この機能の使い方は?

addTimer("#id", タイムスタンプ int);

追記:

実は、この機能には小さな問題があります。期限が表示されないのです。上司が、カウントダウンの時間はせいぜい数時間だと言っていたので、私はカウントダウンの時間と日数を判断するのが面倒です。とてもたくさんあります。したがって、受信したタイムスタンプが 1 日以上前の場合です。すると、次のような結果が表示されます: 02:11:32:874~~残り 2 時間しかありません!それは明らかに間違っていますね。

したがって、ここには 2 つのオプションがあります:

方法 1: varhour =Math.floor( distancetime/1000/60/60%24) を varhour =Math.floor( distancetime/1000/ 60) に変更します。 /60);

期限が 1 日以上前の場合、時間の位置には 24 より大きい数字が表示されます (例: 36:45:22:888)。

方法 2: 日数を計算する別の変数を書き込みます。 以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

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