1

我正在为我的一个信息学项目制作一个网站。为此,我想做:

  1. php 脚本输出可以存储在数据库中的日期。
  2. Javascript 倒计时到那个日期。如果它完成了,我想显示一个超链接(简单的 HTML 锚)。

第 1 项已经完成,但我很难完成第 2 项。到目前为止,我们只学习了 HTML、MySQL 和 PHP。所以我现在正在学习 Javascript。这个网站上的所有例子都太难理解了,必须有一个更简单的方法来做到这一点。我想了解代码。

PHP(无需编辑):

function Klaar_Bouw($getal=0) {
      $nu = strtotime("now");
      $dag = floor($getal / 86400);
      $uur  = floor(($getal % 86400) / 3600);
      $min = floor(($getal % 3600) / 60);
      $sec = ($getal % 60);
      $nieuw = date('d-m-Y H:i:s', mktime(
      date('H',$nu)+$uur,
      date('i',$nu)+$min,
      date('s',$nu)+$sec,
      date('m',$nu),
      date('d',$nu)+$dag,
      date('Y',$nu))
      );
      return $nieuw;
              }
$bouwklaar = Klaar_Bouw( -! random number in seconds !-);
echo"$bouwklaar";

Javascript:

function Bouwen(BouwKlaar) {
    var bouwtijd = new Date(BouwKlaar);

    var dag = (getUTCDay(bouwtijd) - getUTCDay());
    var uur = (getUTCHours(bouwtijd) - getUTCHours());
    var min = (getUTCMinutes(bouwtijd) - getUTCMinutes());
    var sec = (getUTCSeconds(bouwtijd) - getUTCSeconds());

    return dag + ":" + uur + ":" + min + ":" + sec;
}

setInterval(function () {
    var bouw = Bouwen('2013, 05, 21, 20, 00, 00');
    document.getElementById("datum").innerHTML = bouw;
}, 500);

输出格式:dd:hh:mm:ss(倒数到0,然后输出HTML锚链接)

4

2 回答 2

2

您在滥用 Date 对象。尝试像这样使用:

function Bouwen(year, month, day, hour, minute, second) {
    var bouwtijd = new Date(year, (month - 1), day, hour, minute, second);

而且当然:

var bouw = Bouwen(2013, 5, 21, 20, 0, 0);

如果您的倒计时将每秒刷新,则您的间隔不需要以 500 毫秒的频率运行。所以使用:window.setTimeout('targetFunction()', 1000)每秒。另外,它会在同一时间打印,因为您没有更改它。要更改它,您必须将函数设置为按从秒开始减少 1 的间隔来调用自身。但是在调用间隔之前,您必须比较您的当前日期(倒计时)是否等于另一个日期(您未在文本中指定)以停止它并显示您的超链接。

祝你好运。

于 2013-05-21T17:29:08.150 回答
0

看看这个jsFiddle。几个问题:

  • 您使用的new Date功能不正确。此函数接收几个整数输入,而不是格式化的字符串。
  • 注意天、分钟、小时和秒是如何计算的。您应该先减去日期,然后从 getUTC 函数中检索结果。
于 2013-05-21T17:38:05.963 回答