1

我正在尝试按照 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>
4

2 回答 2

1

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

于 2013-02-07T00:16:45.763 回答
1

改变这个:

  }); 
});

</script>

对此:

  }); 
})();            //  ←  note the extra parentheses

</script>

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

于 2013-02-07T00:23:01.017 回答