【问题标题】:javascript timer not counting down when retrieving time from db从数据库检索时间时,javascript计时器不倒计时
【发布时间】:2013-01-22 08:31:07
【问题描述】:

我正在尝试按照 jsfiddle 示例在 javascript 中创建时间:

http://jsfiddle.net/g3rRJ/

现在显然 jsfiddle 中的计时器工作正常。但我遇到的问题是,计时器开始的时间来自一个 mysqli/php 变量,它从数据库中检索时间。

所以除了:

<span id="countdown">01:30:10</span>

我必须把它写成:

echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";

除了:

var time = "01:30:10",

我必须把它写成:

var time = <?php echo json_encode($dbSessionDuration); ?>,

现在我没有收到任何错误,但发生的事情是计时器没有倒计时。我的问题是为什么它不倒计时?来自变量的时间示例可以是01:00:00

下面是函数的代码:

echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";


...

         <script type="text/javascript">


    (function(){
  $(document).ready(function() {
    var time = <?php echo json_encode($dbSessionDuration); ?>,
      parts = time.split(':'),
      hours = +parts[0],
      minutes = +parts[1],
      seconds = +parts[2],
      span = $('#countdown');

    function correctNum(num) {
      return (num<10)? ("0"+num):num;
    }

    var timer = setInterval(function(){
        seconds--;
        if(seconds == -1) {
            seconds = 59;
            minutes--;

            if(minutes == -1) {
                minutes = 59;
                hours--;

                if(hours==-1) {
                  alert("timer finished");
                  clearInterval(timer);
                  return;
                }
            }
        }
        span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds));
    }, 1000);
  }); 
});

</script>

【问题讨论】:

    标签: php javascript jquery mysqli


    【解决方案1】:

    改变这个:

      }); 
    });
    
    </script>
    

    到这里:

      }); 
    })();            //  ←  note the extra parentheses
    
    </script>
    

    这样你才能真正调用你的匿名函数。 (或者,您可以简单地完全删除它的(function(){});。这段代码根本没有理由在函数中。)

    【讨论】:

      【解决方案2】:

      我不知道这是不是输入错误,但我可以通过在匿名函数的第一部分添加 $$(function(){ 来运行此代码。我假设您从数据库中获得的价值以小时:分钟:秒的形式出现。我不确定 Fiddler 为什么会运行,但我必须添加它才能让它在我的环境中工作。

      【讨论】:

      • 虽然 Ruakh 是正确的。如果您删除匿名函数调用,代码将在页面加载后执行。
      猜你喜欢
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 2016-10-18
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多