2013-10-21 4 views
0

디지털 서명이있는 곳에서 문제가 발생하며 포함 된 HTML을 허용합니다. 시계를 표시하는 위젯을 만들었습니다. 다운로드를 시도했는데 어떤 이유로 든 작동하지 않았습니다. 그래서 내 자신이 만들었습니다. 내가 가지고있는 문제는 시계가 정확한 시간을 표시하지 않는다는 것입니다. 나는 숫자가 올바르게 표시되도록했으나 지금보고있는 문제는 PM 대신 AM을 표시한다는 것입니다. 논리가 옳은지 또는 잘못된 조건문을 사용했는지 확실하지 않은 도움을 주시면 감사하겠습니다. 어떤 도움도 굉장 할 것입니다, 고마워요!JavaScript Clock 올바르게 표시되지 않음

<script type="text/javascript"> 

function updateTime() { 
    var currentTime = new Date(); 
    var hours = currentTime.getHours(); 
    var minutes = currentTime.getMinutes(); 
    var seconds = currentTime.getSeconds(); 
    var p; 
    if (minutes < 10){ 
     minutes = "0" + minutes; 
    } 
    if (seconds < 10){ 
     seconds = "0" + seconds; 
    } 
    if (hours >= 12){ 
     p = "PM"; //could not get this in it's own if statement w/o breaking it 
     hours = (hours - 12); 
    } 
    if (hours == 0) { 
     hours = (hours + 12); 
    }else { 
     p = "AM"; 
    } 

    var v = hours + ":" + minutes + ":" + seconds + " " + p; 

    setTimeout("updateTime()", 1000); 
    document.getElementById('time').innerHTML= v; 
} 
updateTime(); 
</script> 
<style type="text/css"> 
#time { 
    font-size: 5em; 
} 
</style> 
<div><span id="time"></span></div> 
+1

시도는이 라인'의 setTimeout을 변경하려면을 ("updateTime()", 1000); to'setTimeout (updateTime, 1000); ' – Morpheus

+0

@Morpheus, 나는 그것을 시도했다. 오전. – George

+0

http://jsfiddle.net/PJhjQ/ – Morpheus

답변

0

, 당신이 만들고있어 하나의 작은 실수가있다. hours12보다 큰지 확인하면 pPM입니다.pAM이어야합니다. 기능을 시작할 때 pAM으로 설정하여 확인한 직후에 이미 else을 이동하여이 문제를 해결할 수 있습니다.

작동하는 예를 보여줄 것이 바이올린 : 실제로 일 때문에 http://jsfiddle.net/s2R9y/

if (hours >= 12) { 
    p = "PM"; 
    hours = (hours - 12); 
} else { 
    p = "AM"; 
} 

setTimeOut 기능, aswell 수정되었습니다 :

setTimeout(updateTime, 1000); 
+0

끝에서 else 문없이 if 문을 쓸 수 없다는 가정하에이 프로그램이 작동했습니다. – George

+0

@GeorgeOffley하지만 이미 코드에 else가없는 if 문을 사용하고있었습니다! 내가 당신을 도왔 기 때문에 기쁩니다. :) – Broxzier

+0

당신은 바로 @ 브룩스 어주의를 기울이지 않습니다. 다시 한 번 감사드립니다! – George

1

변화에 대한 당신의 IF를이 :

귀하의 코드는 거의 옳았다
if (hours >= 12) { 
    p = "PM"; 
    hours = (hours>12) ? (hours - 12) : 12; 
} 
else 
{ 
    if (hours == 0) 
     hours = 12; 
    p = "AM"; 
} 
+0

12noon에서 컴퓨터 시계로 실행했을 때 AM이 아니라 PM으로 표시된다는 점만 제외하면 효과가있었습니다. – George

+0

@GeorgeOffley 코드를 업데이트했습니다. 정오 12시에 12시를 나타냅니다. –

+0

감사합니다. – George

관련 문제