2017-03-21 24 views
-1
<script> 

    function countdown(){ 
     jQuery(document).ready(function($){ 
      var countdown_html = $('.countdown').clone(); 
      var countDownDate = new Date("Apr 23, 2017 19:37:25").getTime(); 


      // Update the count down every 1 second 

      // Get todays date and time 
      var now = new Date().getTime(); 

      // Find the distance between now an the count down date 
      var distance = countDownDate - now; 

      // Time calculations for days, hours, minutes and seconds 
      var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
      var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
      var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
      var seconds = Math.floor((distance % (1000 * 60))/1000); 

      $('.num.days', countdown_html).text(days); 
      $('.num.hours', countdown_html).text(hours); 
      $('.num.minutes', countdown_html).text(minutes); 
      $('.num.seconds', countdown_html).text(seconds); 

      $('.countdown').countdown({until: <?php echo $date['to'] ?>, layout: countdown_html.html() }); 

     }); 
    } 
var run = setInterval(countdown,1000); 

</script> 

このコードは1秒後に1回だけカウントダウン機能を実行します。私は単純なカウントダウンタイマーを実装しようとしていますが、もう互換性のないWordPressのプラグインを拡張しています。私はJavaScriptの初心者です。上記はすべて100%コピーです&ペーストですが、機能の自動呼び出し以外はすべて動作します。JavaScript setIntervallは一度だけ実行されます

+0

と呼ばれます'LL今のところ、1000ミリ秒ごとに1回だけイベントを登録していますが、明らかにDOMReadyイベントは1回しかトリガされません。setInterval(countdown、1000)しかし、 '$(document.ready)'は – haim770

+1

です。あなたは 'jQuery(document).ready'が何をしているのか理解していません。 – dfsq

+0

@ haim770' ready'コールバックはページが準備が整いました。それは変だけど、問題じゃない。 – Bergi

答えて

-1

すべてのコードはjQuery(document).ready()メソッド内にラップされているため、ドキュメントが準備完了になったときにのみ実行され、定義によって1回しか実行できません。

-1
このようなあなたのinit関数を移動

<script> 
    jQuery(document).ready(function($){ 
     function countdown(){ 

      var countdown_html = $('.countdown').clone(); 
      var countDownDate = new Date("Apr 23, 2017 19:37:25").getTime(); 


      // Update the count down every 1 second 

      // Get todays date and time 
      var now = new Date().getTime(); 

      // Find the distance between now an the count down date 
      var distance = countDownDate - now; 

      // Time calculations for days, hours, minutes and seconds 
      var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
      var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
      var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
      var seconds = Math.floor((distance % (1000 * 60))/1000); 

      $('.num.days', countdown_html).text(days); 
      $('.num.hours', countdown_html).text(hours); 
      $('.num.minutes', countdown_html).text(minutes); 
      $('.num.seconds', countdown_html).text(seconds); 

      $('.countdown').countdown({until: <?php echo $date['to'] ?>, layout: countdown_html.html() }); 


    } 
var run = setInterval(countdown,1000); 
    }); 
</script> 

jQuery(document).readyのみ `jQueryの(ドキュメント).ready(関数($){...`を取り除く一度

+0

残念ながら、これは動作しません。アラート( "テスト")を挿入するとき。実際に毎秒ポップアップが表示されますが、更新テキストの望ましい機能はそうではありません。だから私は今問題がsetIntervallではなく、複数回呼び出されたときに何らかの形で期待通りの動作をしない機能があると思います。残念ながら私はJavaScriptについて何も知らない。 – user3752313

+0

私はこのフィドルを作成しました。確認してください:https://jsfiddle.net/5tp3r5ez/ – MemLeak

+0

新しいquesitionを開いてコードを追加する必要があります。またはフィドルを作成する... – MemLeak

関連する問題