0

我正在使用以下代码在我的页面上创建一个倒数计时器,它工作得很好,除了所有日期信息都被硬编码到“getSeconds”函数中,我想这样做,所以我可以有多个倒计时在我猜测的同一页面上意味着必须更改“getSeconds”函数以接受参数,但我不太确定如何执行此操作,并认为我会在这里向专家寻求帮助。

<html>
  <head>

    <script type = "text/javascript">

var cday;
var timeInSecs;
var ticker;

function getSeconds() {
    var now = new Date();
    var nowtime = now.getTime(); // time now in milliseconds
    var countdowntime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0); //  16 hrs = 4 pm
    // countdowntime - change time hh,mm,ss to whatever time required, e.g. 7,50,0 (0750)
    var dy = 0; // Friday (day 5) - change for other days 0-6
    var atime = countdowntime.getTime();
    var diff = parseInt((atime - nowtime) / 1000); // positive if date is in future
    if (diff > 0) {
        cday = dy - now.getDay();
    } else {
        cday = dy - now.getDay() - 1;
    }
    if (cday < 0) {
        cday += 7;
    } // aleady passed countdown time, so go for next week
    if (diff <= 0) {
        diff += (86400 * 7)
    }
    startTimer(diff);
}

function startTimer(secs) {
    timeInSecs = parseInt(secs);
    ticker = setInterval("tick()", 1000);
    tick(); // to start counter display right away
}

function tick() {
    var secs = timeInSecs;
    if (secs > 0) {
        timeInSecs--;
    } else {
        clearInterval(ticker); // stop counting at zero
        getSeconds(); // and start all over again! 
    }
    var days = Math.floor(secs / 86400);
    secs %= 86400;
    var hours = Math.floor(secs / 3600);
    secs %= 3600;
    var mins = Math.floor(secs / 60);
    secs %= 60;
    var result = "Time remaining " + cday + ' day(s) ';
    result += ((hours < 10) ? "0" : "") + hours + " hours " + ((mins < 10) ? "0" : "") + mins + " minutes " + ((secs < 10) ? "0" : "") + secs + " seconds";
    document.getElementById("countdown").innerHTML = result;
}
    </script>
  </head>

  <body onload = "getSeconds()">
    <span id="countdown" style="font-size: 20; font-weight:bold;"> </span>
  </body>
</html>
4

3 回答 3

0

非常简单。一个例子:

function myFunction(var1,var2) {
//some code
}

如此简单地更改这些变量的日期信息。当你想调用你的函数时,将它与你之前编写的参数一起使用。

编辑:

你可以这样做,分别传递每个参数:

function getSeconds(hours, minutes, seconds, daycode) {
    var now = new Date();
    var nowtime = now.getTime(); // time now in milliseconds
    var countdowntime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hours, minutes, seconds); //  16 hrs = 4 pm
    // countdowntime - change time hh,mm,ss to whatever time required, e.g. 7,50,0 (0750)
    var dy = daycode; // Friday (day 5) - change for other days 0-6
    var atime = countdowntime.getTime();
    var diff = parseInt((atime - nowtime) / 1000); // positive if date is in future
    if (diff > 0) {
        cday = dy - now.getDay();
    } else {
        cday = dy - now.getDay() - 1;
    }
    if (cday < 0) {
        cday += 7;
    } // aleady passed countdown time, so go for next week
    if (diff <= 0) {
        diff += (86400 * 7)
    }
    startTimer(diff);
}

您还可以传递一个对象参数,例如:

countdown = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0); //  16 hrs = 4 pm

function getSeconds(countdown, daycode) {
    var now = new Date();
    var nowtime = now.getTime(); // time now in milliseconds
    var countdowntime = countdown
    ...
于 2013-07-07T23:56:54.690 回答
0

下面是一个将年、月和日期作为参数传递的示例,用于倒计时。当你调用 getSeconds 函数时,只需传入getSeconds(2013,7,8)

function getSeconds(varYear, varMonth, varDate) {
    var now = new Date();
    var nowtime = now.getTime(); // time now in milliseconds
    var countdowntime = new Date(varYear, varMonth, varDate, 0, 0, 0); //  16 hrs = 4 pm
    // countdowntime - change time hh,mm,ss to whatever time required, e.g. 7,50,0 (0750)
    var dy = 0; // Friday (day 5) - change for other days 0-6
    var atime = countdowntime.getTime();
    var diff = parseInt((atime - nowtime) / 1000); // positive if date is in future
    if (diff > 0) {
        cday = dy - now.getDay();
    } else {
        cday = dy - now.getDay() - 1;
    }
    if (cday < 0) {
        cday += 7;
    } // aleady passed countdown time, so go for next week
    if (diff <= 0) {
        diff += (86400 * 7)
    }
    startTimer(diff);
    }
于 2013-07-08T00:01:52.447 回答
0

看起来该变量countdowntime是您需要作为参数传递给函数 getSeconds() 以便进行多个倒计时的变量。您只需要更改函数定义以将该Date对象作为参数接收,如下所示:

function getSeconds(countdowntime){

并注释掉当前声明倒计时对象的行。然而,我注意到的另一件事是您使用全局变量在函数之间共享数据。这是您可能需要考虑返工的事情,因为现在将有多个计时器。

于 2013-07-08T00:06:21.693 回答