현재 날짜와 시간을 기준으로 특정한 날짜와 시간을 입력하여 함수를 실행하는 스크립트

 

 

function timerFunc(func, dateTime){
	//ex) timerFunc(function(){console.log('test');},'20210108144740');
    //시간은 24시간을 기준으로 입력하여야 합니다.
    var year = Number(dateTime.substring(0,4));
    var month = Number(dateTime.substring(4,6));
    var day = Number(dateTime.substring(6,8));
    var time = Number(dateTime.substring(8,10));
    var minute = Number(dateTime.substring(10,12));
    var second = Number(dateTime.substring(12,14));
     
    var oprDate = new Date(year, month-1, day, time, minute, second); //동작을 원하는 시간의 Date 객체를 생성합니다.
    var nowDate = new Date();                                         //현재 날짜와 시간을 확인
     
    var timer = oprDate.getTime() - nowDate.getTime(); //동작시간의 밀리세컨과 현재시간의 밀리세컨의 차이를 계산합니다.
    if(timer < 0){ //타이머가 0보다 작으면 함수를 종료합니다.
       return;
    }else{
       setTimeout(func, timer);
    }
}

 


자바 스크립트 에서는 3가지 변수 선언 방식을 사용하고 있다.


1. var : 어디든 접근 가능한 변수


var x = 1;         //x = 1

{

var x = 2; //x=2

}

x = 3;              //x=3



2. let : 블럭영역(scope)에서 사용되는 변수 


var x = 1;      //x=1

{

   let y = 2;    //y=2

}



3. const : 상수로 사용


const PI = 3.14;



3가지 변수 선언 방식 중, var의 경우 한번의 선언으로 전역에서 접근이 가능하다.


따라서, 다양한 Javascript 파일이 import 되는 경우, 변수명이 충돌나는 상황이 발생할 수도 있다.


따라서, let의 사용성을 증가시켜, 무분별한 var 선언을 줄이도록 해야한다.






IE ( chrome 포함 ) 에서는 event.KeyCode를 사용하여 사용자 입력을 자바스크립트로 제어할 수 있다.


하지만 FireFox( 이하 FF )에서는 event.KeyCode가 적용되지 않기 때문에 사용자 입력을 제어할 수 없게 된다.


이러한 상황이 발생하는 이유는 브라우저에 따라 이벤트가 다르게 인식된다.


IE는 window.event 객체가 인식하고, FF는 event 객체가 인식한다.


이러한 이유로, IE와 FF 모두 동작하는 자바스크립트를 작성하려면 이와 같은 경우도 고려를 해야될 것이다.


기본적인 사용법은 아래와 같이 사용 하면 될 것이다.


<script language="javascript" type="text/javascript">

function numCheck(e) {

var eventCode =(window.netscape)? e.which : e.keyCode;

if(( eventCode > 31) && ( eventCode < 45) || ( eventCode > 57)) {

if ( window.netscape ){

e.preventDefault();

}else{

e.returnValue = false;

}

}

}

</script>


        <input type="text" onKeyPress='numCheck(event)'>