JavaScript setIntervall只运行一次

时间:2017-03-21 11:12:59

标签: javascript setinterval

<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秒后执行一次倒计时功能。我正在尝试实现一个简单的倒数计时器,扩展一个不再兼容的wordpress插件。我是JavaScript的初学者,以上所有内容都是100%Copy&amp;粘贴,但除了自动调用函数外,一切正常。

2 个答案:

答案 0 :(得分:-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仅被调用一次

答案 1 :(得分:-2)

由于您的所有代码都包含在jQuery(document).ready()方法中,因此只有在文档准备就绪时才会执行,并且只能按照定义执行一次。