![](/img/trans.png)
[英]Instead of using a hard coded values in JavaScript, is it possible to use a cron to do it?
[英]changing a function to use parameters instead of hard coded values
我正在使用以下代码在页面上创建一个倒数计时器,除了将所有日期信息都硬编码到“ 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>
很简单。 一个例子:
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
...
下面是传递年,月和日作为参数的示例,用于倒计时。 调用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);
}
似乎变量countdowntime
是您需要将其作为参数传递给getSeconds()函数的变量,以便具有多个递减计数。 您只需要更改函数定义以将该Date
对象作为参数,就像这样:
function getSeconds(countdowntime){
并注释掉当前声明countdowntime对象的行。 但是,我注意到的其他事情是,您正在使用全局变量在函数之间共享数据。 因为现在将有多个计时器,所以您可能需要研究返工。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.