728x90

 

이벤트(Event)

 

A.이벤트 설정 방법

 

1.고전 이벤트 모델

요소에 접근해서 속성 집어넣어서 이벤트 추가하는 것

 

이벤트 추가(기능 추가)

var test1 = document.getElementById('test1'); // 요소 접근
// var test1에 속성 넣고

// 이벤트 추가
test1.onclick = function() {
        console.log('test1이 실행되었습니다.');
}

 

이벤트 삭제(기능 삭제)

test2.onclick = function() {
        console.log('test2가 실행되면서 test1이벤트를 삭제하였습니다.');
        test1.onclick = null;    // null 집어넣어서 삭제
}

 

다른 이벤트 실행방법

지금까지 직접 펑션 집어넣었었는데, 펑션을 하나 미리 만들어 놓고 거기에다 연결도 가능

var test2_1 = document.getElementById('test2_1');
function test21() {
    alert('이름으로 이벤트 연결');
}
test2_1.onclick = test21;

 

다수의 이벤트 동시에 연결가능

var test2_1 = document.getElementById('test2_1');
function test21() {          // function 미리 선언
    alert('이름으로 이벤트 연결');
}
test2_1.onclick = test21;   // 미리 선언한 function 호출
 
// 다수의 이벤트 동시 연결 가능
test2_1.onmouseover = function() {      // onmouseover : 마우스포인터가 해당 위치로 가면 발생
    console.log('여러 이벤트 동시 연결 가능');
    // onmouseover : 마우스가 올라간것에 대한 이벤트 
}

test2_1.onclick = test21;로 위에서 선언된 test21 펑션을 호출하면서 바로 아랫줄에서 마우스포인터가 해당 버튼에 올라가면 이벤트 발생하도록 또 펑션을 연결하므로써 동시다발적으로 이벤트가 발생 가능하게 함

 

2.인라인 모델

태그안에 집어넣는게 인라인모델

<h3>인라인 모델</h3>
    <button onclick="**test4()**;">Event - 인라인 모델</button>
    <button onclick="alert('test4 가 실행되었습니다')">Event - 인라인 모델</button>
    <script>
        function test4(){
            alert('test4가 실행되었습니다');
        }
    </script>

 

3.표준 이벤트 모델

 

addEventListener : 이벤트 추가

addEventListener(연결이벤트, 실행할 함수)
<button id="test5">표준 이벤트 모델 : test5 실행확인</button>
<script>
    var test5 = document.getElementById('test5');

    function fn_test5_1() {
        console.log('test5가 클릭됐습니다.');
    }
    function fn_test5_2() {
        console.log('test5에 들어왔습니다.');
    }

    // 이벤트 추가 : addEventListener
    test5.addEventListener('click', fn_test5_1);     // click하면 fn_test5_1 함수 실행하라는 코드
    test5.addEventListener('mouseover', fn_test5_2); // 마우스포인터가 올라가면 fn_test5_2 함수를 실행하라는 코드

</script>

 

removeEventListener : 이벤트 삭제

removeEventListener(삭제할 이벤트, 삭제할 함수)
<button id="test5">표준 이벤트 모델 : test5 실행확인</button>
<button id="test6">표준 이벤트 모델 : test6 실행확인</button>
<script>
    var test5 = document.getElementById('test5');
    var test6 = document.getElementById('test6');

    // 이벤트 삭제 : removeEventListener
    test6.addEventListener('click', function() {     // 클릭하면 function() 함수를 실행하라는 코드
        console.log('test6에 들어오면서 test5의 클릭이벤트를 제거 했습니다.');
        **test5.removeEventListener('click',fn_test5_1);**
        // 이벤트 삭제 효과 : 이벤트 제거 후, test5 진입은 되나 클릭은 안되게 된다.

    });

</script>

 

 

 


 

이벤트 기본 동작이란?

웹브라우저의 구성요소들은 각각 기본적인 동작 방법을 가지고 있다.

  • 텍스트 필드에 포커스를 준 상태에서 키보드를 입력하면 텍스트가 입력된다.
  • 폼에서 submit 버튼을 누르면 데이터가 전송된다.
  • a 태그를 클릭하면 href 속성의 URL로 이동한다.

이러한 기본적인 동작들을 기본 이벤트라고 하는데 사용자가 만든 이벤트를 이용해서 이러한 기본 동작을 취소할 수 있다.

 

이벤트 기본동작 취소하는 방법 3가지

 

1)inline

이벤트의 리턴값이 false이면 기본 동작이 취소된다.

<p>
    <a href="http://opentutorials.org" 
			onclick="if(document.getElementById('prevent').checked) return false;">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org" 
					onsubmit="if(document.getElementById('prevent').checked) return false;">
            <input type="submit" />
    </form>
</p>

 

2)property 방식

리턴 값이 false이면 기본동작이 취소된다.

<p>
    <a href="http://opentutorials.org">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org">
            <input type="submit" />
    </form>
</p>
<script>
    document.querySelector('a').onclick = function(event){
        if(document.getElementById('prevent').checked)
            return false;
    };
     
    document.querySelector('form').onclick = function(event){
        if(document.getElementById('prevent').checked)
            return false;
    };
 
</script>

 

3)addEventListener 방식

이 방식에서는 이벤트 객체의 preventDefault 메소드를 실행하면 기본 동작이 취소된다

<label>prevent event on</label>
<input id="prevent" type="checkbox" name="eventprevent" value="on" />
<p>
    <a href="http://opentutorials.org">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org">
            <input type="submit" />
    </form>
</p>
<script>
    document.querySelector('a').addEventListener('click', function(event){
        if(document.getElementById('prevent').checked)
            event.preventDefault();
    });
     
    document.querySelector('form').addEventListener('submit', function(event){
        if(document.getElementById('prevent').checked)
            event.preventDefault();
    });

</script>

출처 : https://opentutorials.org/course/1375/6769

728x90
반응형

+ Recent posts