2012-03-23 85 views
0

我有一个js脚本,它检查用户的本地时间并基于页面上的本地时间切换图像。 条件是应该从上午6点到下午6点显示一个图像,从下午6点到上午6点显示另一个图像。 一切工作正常,但在午夜后条件无法正常工作,并且该期间选定的图像不显示。 这里是脚本我有:javascript日期问题

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'; 
    }   
} 

任何想法,我怎么能解决这个问题?

回答

1
  • 当你改变的hourminute值的time变量不会神奇地更新。如果条件为之后,将作业赋予time变量
  • 另外,不要忘记追加后缀:
  • 另一个问题:当一个元素不能使用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'; 
    } 
} 
0

也许我误解你究竟想在这里做的,但如果你只是想以确定它是否是夜间(晚上6点至早上6点之间),或没有,这将做它你:

var night = (new Date().getHours < 6 || new Date().getHours > 18); 

如果是晚上则night === true如果不是night === false。然后你可以做你的图像替换逻辑。例如。

if (night) { 
    logo.src = "night.png"; 
} else { 
    logo.src = "day.png"; 
}