2012-03-23 88 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"; 
}