Javascript倒计时问题
我设计了2页 出于某种未知的原因,第二个脚本没有刷新倒计时脚本,它只加载了一次 我尝试将javascript放在代码的不同位置,甚至从外部文件调用它,但是这完全破坏了倒计时脚本 对于任何想使用此倒数javascript的人,请随时使用。代码如下:Javascript倒计时问题,javascript,html,Javascript,Html,我设计了2页 出于某种未知的原因,第二个脚本没有刷新倒计时脚本,它只加载了一次 我尝试将javascript放在代码的不同位置,甚至从外部文件调用它,但是这完全破坏了倒计时脚本 对于任何想使用此倒数javascript的人,请随时使用。代码如下: <script> var timeout; // Uncomment below to use one. var reset = function() { //timeout = weekly(4, 12, 5); // 0=s
<script>
var timeout;
// Uncomment below to use one.
var reset = function() {
//timeout = weekly(4, 12, 5); // 0=sunday, 6 = saturday
//timeout = daily(2, 0, 0);
timeout = new Date('25-Feb-2013');
}
var displayEndText = function() {
end_day = timeout.getDay();
end_date = timeout.getDate();
end_month = timeout.getMonth();
end_year = timeout.getFullYear();
end_hour = timeout.getHours();
var now = new Date();
todays_midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
tomorrows_midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 2);
dayText = "eek";
timeText = "bar";
a_p = "";
if (end_hour < 12) {
a_p = "AM";
} else {
a_p = "PM";
end_hour -= 12;
}
end_min = timeout.getMinutes();
if (end_min < 10) end_min = "0" + end_min;
if ((end_hour == 0) && (end_min == 0)) {
if (a_p == "AM") {
timeText = "Midnight";
var prevDay = new Date(timeout.getFullYear(), timeout.getMonth(), timeout.getDate() - 1);
end_day = prevDay.getDay();
end_date = prevDay.getDate();
} else {
timeText = "Midday";
}
} else {
timeText = end_hour + ":" + end_min +" " + a_p;
}
if (timeout <= todays_midnight) {
if ((end_hour == 0) && (end_min == 0)) {
dayText = "";
} else {
dayText = "Today";
}
} else if (timeout <= tomorrows_midnight) {
dayText = "Tomorrow";
} else {
d_names = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var sup;
switch (end_date) {
case 1:
case 21:
case 31:
sup = "st";
break;
case 2:
case 22:
sup = "nd";
break;
case 3:
case 23:
sup = "rd";
break;
default:
sup = "th";
}
dayText = d_names[end_day] + " " + end_date + "<SUP>" + sup + "</SUP> "
}
//document.getElementById('ed').innerHTML = d_names[end_day] + " " + end_date + "<SUP>" + sup + "</SUP> " + m_names[end_month] + " " + end_year + " at " + end_hour + " : " + end_min + " " + a_p;
document.getElementById('ed').innerHTML = dayText + " at " + timeText;
}
var display = function () {
var now = new Date();
var secondsToGo = Math.ceil((timeout - now) / 1000);
if (secondsToGo < 0) {
reset();
secondsToGo = Math.ceil((timeout - now) / 1000);
window.location = "http://modeliving.co.uk/index1.php";
}
var secs = Math.floor(secondsToGo % 60);
var minutesToGo = Math.floor(secondsToGo / 60);
var mins = Math.floor(minutesToGo % 60);
var hoursToGo = Math.floor(minutesToGo / 60);
var hours = hoursToGo % 24;
var daysToGo = Math.floor(hoursToGo / 24);
if (secs < 10) secs = "0" + secs;
if (mins < 10) mins = "0" + mins;
if (hours < 10) hours = "0" + hours;
document.getElementById('cdDays').innerHTML = daysToGo;
document.getElementById('cdHours').innerHTML = hours;
document.getElementById('cdMins').innerHTML = mins;
document.getElementById('cdSecs').innerHTML = secs;
// document.getElementById('cdAll').innerHTML = daysToGo + ' days ' + hours + ' hours ' + mins + ' minutes ' + secs + ' seconds';
displayEndText();
}
var weekly = function(dow, hour, min) {
if (typeof(dow)==='undefined') dow = 1; // sunday midnight
if (typeof(hour)==='undefined') hour = 0;
if (typeof(min)==='undefined') min = 0;
//dow = dow % 7;
var now = new Date();
var daysToGo = dow - now.getDay();
if (daysToGo < 0) daysToGo += 7;
if ((daysToGo == 0) && ((now.getHours()*60 + now.getMinutes()) >= (hour*60 + min))) daysToGo = 7;
var result = new Date(now.getFullYear(), now.getMonth(), now.getDate()+daysToGo, hour, min, 0, 0);
return result;
}
var daily = function(every, hour, min) {
if (typeof(every)==='undefined') every = 2; // every 2 days
if (typeof(hour)==='undefined') hour = 0;
if (typeof(min)==='undefined') min = 0;
var now = new Date();
var daysToGo = Math.floor(((now - 0) / 1000 / 60 / 60 / 24) % every);
if ((daysToGo == 0) && ((now.getHours()*60 + now.getMinutes()) >= (hour*60 + min))) daysToGo = every;
var result = new Date(now.getFullYear(), now.getMonth(), now.getDate()+daysToGo, hour, min, 0, 0);
return result;
}
reset();
display();
setInterval(display, 1000);
</script>
var超时;
//取消下面的注释以使用一个。
var reset=函数(){
//超时=每周(4,12,5);//0=星期天,6=星期六
//超时=每天(2,0,0);
超时=新日期(“2013年2月25日”);
}
var displayEndText=函数(){
end_day=timeout.getDay();
end_date=timeout.getDate();
end_month=timeout.getMonth();
end_year=timeout.getFullYear();
end_hour=timeout.getHours();
var now=新日期();
todays_midnight=新日期(now.getFullYear()、now.getMonth()、now.getDate()+1);
明天午夜=新日期(now.getFullYear(),now.getMonth(),now.getDate()+2);
dayText=“eek”;
timeText=“bar”;
a_p=“”;
如果(结束时间<12小时){
a_p=“AM”;
}否则{
a_p=“PM”;
结束时间-=12;
}
end_min=timeout.getMinutes();
如果(end_min<10)end_min=“0”+end_min;
如果((结束时间=0)和&(结束时间=0)){
如果(a_p==“AM”){
timeText=“午夜”;
var prevDay=新日期(timeout.getFullYear()、timeout.getMonth()、timeout.getDate()-1);
end_day=prevDay.getDay();
end_date=prevDay.getDate();
}否则{
timeText=“正午”;
}
}否则{
timeText=结束时间+“:“+结束时间+”+“+a\U p;
}
如果(超时=(小时*60+min)),则daysToGo=7;
var result=新日期(now.getFullYear()、now.getMonth()、now.getDate()+daysToGo、hour、min、0、0);
返回结果;
}
var每日=功能(每小时,分钟){
if(typeof(every)=='undefined')every=2;//每2天
如果(小时的类型)=='undefined')小时=0;
如果(typeof(min)==‘未定义’)min=0;
var now=新日期();
var daysToGo=数学楼层((现在为-0)/1000/60/60/24)%every);
如果((daysToGo==0)和((now.getHours()*60+now.getMinutes())>=(hour*60+min)),daysToGo=every;
var result=新日期(now.getFullYear()、now.getMonth()、now.getDate()+daysToGo、hour、min、0、0);
返回结果;
}
重置();
显示();
设置间隔(显示,1000);
然后将其添加到html中:
<div id="cdDays"></div>
<div id="cdHours"></div>
<div id="cdMins"></div>
<div id="cdSecs"></div>
当我在浏览器中打开第二页并查看Javascript控制台时,我发现您在这一行有一个错误:
document.getElementById('ed').innerHTML = dayText + " at " + timeText;
错误:
未捕获的TypeError:无法将属性“innerHTML”设置为null
这是从
显示
函数调用的函数,该函数在设置超时
函数之前调用。所以这个错误正在终止执行。修复错误后,您应该已全部设置好。注释行178,它就可以工作了。您正在尝试访问id='ed'不存在的元素