2016-06-02 6 views
-2
<script> 
function updateClock() { 
    var now = new Date(); 
    var time = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds(); 
    document.getElementById('current').innerHTML = time; 
    setTimeout(updateClock, 1000); 
} 
function check() 
{ 
    var now= new Date(); 
    var h=document.getElementById('hour').value; 
    var m=document.getElementById('minutes').value; 
    if((now.getHours()==h)&&(now.getMinutes()==m)) 
     document.getElementById('display').innerHTML="Alarm tone is playing"; 
    setTimeout(check, 1000); 
} 
function setAlarm(){ 
    var msg="Alarm is set for "; 
    var ha=Number(document.getElementById('hour').value); 
    var ma=Number(document.getElementById('minutes').value); 
    var now=new Date(); 
    var hc=now.getHours(); 
    var mc=now.getMinutes(); 
    var nh=0,nm=0; 
    if(hc>ha){ 
     nh=24-hc; 
     //document.getElementById('display').innerHTML=nh; 
     nh=nh+ha; 
     if(mc>ma){ 
      nh--; 
      nm=60-mc; 
      nm=nm+ma; 
     } 
     else 
      nm=ma-mc; 
     msg=msg+nh+" hours "+nm+" minutes from now "; 
     document.getElementById('alarmmsg').innerHTML=msg; 
    } 
    /*else if(hc==ha){ 
     if(mc>ma){ 
      nh=24-hc; 
      nh=nh+ha; 
      if(mc>ma){ 
       nh--; 
       nm=60-mc; 
       nm=nm+ma; 
      } 
      else 
       nm=ma-mc; 
      } 
     } 
     else{ 
      nh=0; 
      nm=ma-mc; 
     } 
    } 
    else{ 
     nh=ha-hc; 
     if(mc>ma){ 
      nh--; 
      nm=60-mc; 
      nm=nm+ma; 
     } 
     else{ 
      nm=ma-mc; 
     } 
    } 
    msg=msg+nh+" hours "+nm+" minutes from now"; 
    setTimeout(function(){ 
     document.getElementById("alarm").innerHTML=msg; 
     },3000);*/ 
    check(); 

} 
</script> 

위의 코드는 현재 시간을 표시하고 알람을 설정하며 알람 (경고 메시지)에 남은 시간을 계산하고 표시하는 코드입니다.현재 시간 표시 안 함

코드 위에서 몇 가지 주석을 제거에

, 여기에 업데이트 된 코드 fiddle

그것은 현재 시간뿐만 아니라 알람 메시지를 표시하지 않습니다이다.

setTimeout() 등을 여러 번 사용했기 때문입니까? 도와 주셔서 감사합니다.

감사합니다. 특히

이 두 라인 :

+1

경우 정정 및 기능 메가입니다. – Jieter

+0

두 가지. 첫째, 전체 코드를 덤프하지 마십시오. 대신 사람들이 점검 할 수있는 바이올린을 만듭니다. 둘째, 선택 컨트롤에서 많은 옵션을 사용하지 마십시오. 선택을 허용하는 더 좋은 방법이 있으며, 60 항목의 긴 드롭 다운에서 선택하십시오. 대신 숫자 입력을 사용할 수 있습니다. – jitendragarg

+0

@jitendragarg 귀하의 조언에 감사드립니다. 60 개 항목 중에서 선택할 수있는 더 나은 방법을 알고 싶습니까? – Nancy

답변

0

당신은 그 거대한 IF 문에 일부 누락 된 중괄호가 있습니다. 다음은

else 
nm=ma-mc; 

그것은 당신이 약간 더 긴 변수 이름을 사용하는 경우 정말 당신의 코드를보다 읽기 쉽게 그리고 어쩌면 거의 기능을 동일합니다 코드를 이동하려고 할

if(hc>ha) 
    { nh=24-hc; 
    //document.getElementById('display').innerHTML=nh; 
    nh=nh+ha; 
    if(mc>ma) 
    { nh--; 
     nm=60-mc; 
     nm=nm+ma; 
    } 
    else 
    { nm=ma-mc; 
    //msg=msg+nh+" hours "+nm+" minutes from now "; 
    //document.getElementById('alarmmsg').innerHTML=msg; 
    } 
    } 
else if(hc==ha) 
    { if(mc>ma) 
     { nh=24-hc; 
     nh=nh+ha; 
     if(mc>ma) 
     { nh--; 
      nm=60-mc; 
      nm=nm+ma; 
     } 
     else 
     { nm=ma-mc; 
     } 
     } 
    else 
    { nh=0; 
     nm=ma-mc; 
    } 
    } 
else 
    { nh=ha-hc; 
    if(mc>ma) 
    { nh--; 
     nm=60-mc; 
     nm=nm+ma; 
    } 
    else 
    { nm=ma-mc; 
    } 
    } 
+0

고맙습니다. 그 지금 일하고있어. 약간의 문제가 있습니다. 알람이 설정된 후 msg를 3 초 동안 표시하고 싶습니다. 그러나 메시지는 화면에서 사라지지 않습니다. 무엇이 문제 일 수 있습니까? – Nancy

+0

알람이 울리고 있다는 메시지를 지우는 코드가 없습니다. 메시지를 지울 "경고음 재생 중"IF 문에 3000 초를 추가하십시오. –