2012-03-23 6 views
0

나는 사용자의 현지 시간을 확인하고 현지 시간에 따라 페이지의 이미지를 전환하는 js 스크립트를 가지고있다. 조건은 하나의 이미지가 6AM에서 6PM까지 표시되어야하고 다른 이미지는 6PM에서 6AM까지 표시되어야합니다. 자정 이후에 조건이 제대로 작동하지 않고 그 기간 동안 선택한 이미지가 표시되지 않는 것을 제외하면 모든 것이 잘 작동합니다. 여기 스크립트 내가이된다자바 스크립트 날짜 문제

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')입니다. 항상은 false입니다. 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 === false가 아닌 경우 그 다음 night === true 밤이됩니다. 그런 다음 이미지 대체 로직을 수행 할 수 있습니다. 예 :

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