我有一个js脚本,它根据页面上的本地时间开关图像检查用户的本地时间。 条件是一个图像应该从早上6点到下午6点显示,另一个图像应该从下午6点到早上6点显示。 一切正常,但午夜后条件无法正常工作,并且不会显示该期间的所选图像。 这是我的脚本:
function SetHiddenVariable() {
var localTime = new Date();
var hour = localTime.getHours();
var minute = localTime.getMinutes();
var time = hour + ':' + minute;
var suffix = "AM";
if(hour >=12)
{
suffix = "PM";
hour = hour - 12;
}
if(minute < 10)
{
minute = "0" + minute;
}
var timeMorning = new Date("1/1/2012 06:00 AM");
var timeEvening = new Date("1/1/2012 06:00 PM");
var realTime = new Date("1/1/2012 " + time);
var logo = document.getElementById('imgLogo');
if (realTime < timeMorning && realTime > timeEvening) {
if (logo == typeof ('undefined')) return;
logo.src = 'Images/night.png';
}
}
我知道如何解决这个问题?
答案 0 :(得分:1)
time
和hour
的值时,minute
变量不会神奇地更新。将作业放在time
变量之后 if-conditions。document.getElementById
找不到元素时,会返回null
。您当前的支票存在缺陷:typeof ('undefined')
会返回string
,因此logo == typeof ('undefined')
将始终为假。将其替换为logo == null
。代码:
function SetHiddenVariable() {
var localTime = new Date();
var hour = localTime.getHours();
var minute = localTime.getMinutes();
//var time = hour + ':' + minute; // Removed here
var suffix = "AM";
if (hour >= 12) {
suffix = "PM";
hour = hour - 12;
}
if (minute < 10) {
minute = "0" + minute;
}
var time = hour + ':' + minute + ' ' + suffix; // Placed here, added suffix
var timeMorning = new Date("1/1/2012 06:00 AM");
var timeEvening = new Date("1/1/2012 06:00 PM");
var realTime = new Date("1/1/2012 " + time);
var logo = document.getElementById('imgLogo');
if (realTime < timeMorning && realTime > timeEvening) {
if (logo == null) return;
logo.src = 'Images/night.png';
}
}
答案 1 :(得分:0)
也许我误解了你在这里想做什么,但是如果你只是想确定它是否是夜间(下午6点到早上6点之间)或不这样做,那么你会这样做:
var night = (new Date().getHours < 6 || new Date().getHours > 18);
如果是晚上,那么night === true
如果不是night === false
。然后你可以做你的图像替换逻辑。 E.g。
if (night) {
logo.src = "night.png";
} else {
logo.src = "day.png";
}