计时器Javascript
这在IE中不起作用。永远-00:00:00 在Chrome和Firefox中工作。 为什么? 我怎样才能修好它计时器Javascript,javascript,Javascript,这在IE中不起作用。永远-00:00:00 在Chrome和Firefox中工作。 为什么? 我怎样才能修好它 function timer() { var now = new Date(); var enddate = new Date("07,12,2012,23:00:00"); var totalRemains = (enddate.getTime()-now.getTime()); if (totalRemains>1) {
function timer()
{
var now = new Date();
var enddate = new Date("07,12,2012,23:00:00");
var totalRemains = (enddate.getTime()-now.getTime());
if (totalRemains>1)
{
var RemainsSec=(parseInt(totalRemains/1000));
var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
var RemainsFullHours=(parseInt(secInLastDay/3600));
if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
var secInLastHour=secInLastDay-RemainsFullHours*3600;
var RemainsMinutes=(parseInt(secInLastHour/60));
if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
var lastSec=secInLastHour-RemainsMinutes*60;
if (lastSec<10){lastSec="0"+lastSec};
var mcend = Date.parse("Jan 1, 2009, 00:00:00");
var mcnow = now.getTime();
var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
document.getElementById('timer').innerHTML = '<p class="timeline">TIME LEFT: '+ RemainsFullHours+":"+RemainsMinutes+":"+lastSec+'</p>';
setTimeout("timer()",10);
}
else {document.getElementById("timer").innerHTML = '<p class="timeline">TIME LEFT: 00:00:00</p>';}
}
<body onload="timer();">
函数计时器()
{
var now=新日期();
var enddate=新日期(“07,122012,23:00:00”);
var totalresistes=(enddate.getTime()-now.getTime());
如果(总数仍然大于1)
{
var RemainsSec=(parseInt(totalresists/1000));
var remainsfulldies=(parseInt(remainsec/(24*60*60));
var secInLastDay=RemainsSec RemainsFullDays*24*3600;
var RemainsFullHours=(parseInt(secInLastDay/3600));
如果(RemainsFullHours问题在这一行:
var enddate = new Date("07,12,2012,23:00:00");
这不是一种约会格式。Firefox很有意义,别指望InternetExplorer也能帮你,也就是说,他很无情,一个人走
Date
对象构造函数采用几个参数:
新日期()
新日期(毫秒)
新日期(日期字符串)
新日期(年、月、日[、小时、分钟、秒、毫秒])
使用dateString
选项时,日期字符串必须符合;如果使用支持的格式,则该选项有效:
var enddate = new Date("July 12, 2012 23:00:00");
并且,决不,决不,决不将字符串传递给setTimeout
,而是传递函数引用:
setTimeout(timer,10);
请在此处尝试:
文档
- 在MDN上设置超时
- MDN上的日期
- RFC 2822字符串日期格式规范-
问题出在这一行:
var enddate = new Date("07,12,2012,23:00:00");
这不是一种约会格式。Firefox很有意义,别指望InternetExplorer也能帮你,也就是说,他很无情,一个人走
Date
对象构造函数采用几个参数:
新日期()
新日期(毫秒)
新日期(日期字符串)
新日期(年、月、日[、小时、分钟、秒、毫秒])
使用dateString
选项时,日期字符串必须符合;如果使用支持的格式,则该选项有效:
var enddate = new Date("July 12, 2012 23:00:00");
并且,决不,决不,决不将字符串传递给setTimeout
,而是传递函数引用:
setTimeout(timer,10);
请在此处尝试:
文档
- 在MDN上设置超时
- MDN上的日期
- RFC 2822字符串日期格式规范-
永远不要将字符串传递给setInterval()
或setTimeout()
。这样做与使用eval()
一样糟糕,并且在使用变量时会导致代码无法读取,甚至可能不安全,因为您需要将它们插入字符串中,而不是传递实际的变量。正确的解决方案是setInterval>(function(){/*your code*)},毫秒);
这同样适用于setTimeout()
。如果您只想不带任何参数调用单个函数,也可以直接传递函数名:setInterval(someFunction,毫秒);
(请注意,函数名后面没有()
)切勿将字符串传递给setInterval()
或setTimeout()
。这样做与使用eval()
一样糟糕,并且在使用变量时会导致无法读取且可能不安全的代码,因为您需要将它们插入字符串而不是传递实际变量。正确的解决方案是setInterval(function()){/*您的代码*)},毫秒);
。这同样适用于setTimeout()
。如果您只想不带任何参数调用单个函数,也可以直接传递函数名:setInterval(someFunction,毫秒);
(请注意,函数名后面没有()
)