이벤트 처리

  • 마우스/키보드의 입력에 대한 처리

 

이벤트의 종류

  • 마우스 : 클릭, 더블클릭, 이동, 좌/우버튼 등
  • 키보드 : 키 다운, 키 업 등
  • 기타 페이지가 열렸을 때, 입력 요소가 포커스를 가질 때 등

 

이벤트 처리 방식

  • 태그에 직접 등록 → <body onload="alert('출력')">
  • 태그의 이벤트 속성에 함수 이름 동록 → event01.html
  • addEventListener(event, function) → HTML 태그와 별개로 스크립트 영역으로만 처리하는 방식

 

event keyword

  • 포커스 : focusin/focusout
  • 키보드 : keydown/keyup
  • 마우스 : click, dblclick, mouseenter, mouseout, mousemove, mousedown, mouseup, mouseover

 

마우스 위치 event 예제)

<body>
<div id="over" onmouseover="mEvent('over')" 
                onmouseout="mEvent('out')"></div>
</body>
<script>
function mEvent(evt){
    if(evt == 'over'){
        document.getElementById('over').innerHTML='마우스 입장!';            }
    if(evt == 'out'){
        document.getElementById('over').innerHTML='마우스 퇴장!';
    }
}
</script>

마우스 위치에 따른 이벤트 확인 가능.

 

날짜 함수 활용한 이벤트 예제)

<body>
    <h3>오늘의 날짜 : <span id="demo"></span></h3>
    <button onclick="getDay()">날짜 출력</button>
</body>
<script>
	function getDay(){
    document.getElementById('demo').innerHTML=Date();
    }
</script>

 

키보드 이벤트 예제)

<body>
    <input id="keyon" type="text" onkeydown="going()">
    <h4 id="typing"></h4>
</body>
<script>
function going(){
        var msg = document.getElementById('keyon').value;
        document.getElementById('typing').innerHTML=msg;
    }
</script>

키보드가 눌리게되면 going 함수 호출.

going 함수는 입력 창에 있는 입력값을 가져와서 출력, value 속성에 있는 값을 가져감

키가 눌리는 시점에는 데이터가 없기 때문에 그 데이터는 넘어가지 못함.

 

onchange 예제)

<body>
<select id="mysel" onchange="myselect()">
    <option>현대</option>
    <option>기아</option>
    <option>쉐보레</option>
    <option>BMW</option>
</select>
<h4 id=selres></h4>
</body>
<script>
    function myselect(){
        var msg = document.getElementById('mysel').value;
        document.getElementById('selres').innerHTML=msg;
    }
</script>

선택한 옵션이 selres 부분에 출력됨.

 

자바 스크립트 예제 야구 게임

규칙

1.볼과 스트라이크를 선택 가능
2.볼이 4개이면 모두 초기화 된다.
3.스트라이크가 3개가 되면 1아웃이 된다.
4.아웃이 3개가 되면 게임 오버가 뜬다.
5.게임 오버가 되고 나서 재 시작 버튼을 누르면 모두 초기화가 된다.

<body>
    <button id="ball">ball</button>
    <button id="strike">strike</button>
    <button id="restart" style="display: none;">재시작</button>
    <br>
    <br>
    B : <b id="b">0</b><br>
    S : <b id="s">0</b><br>
    O : <b id="o">0</b><br>
    <script>
        // 1. 모든 요소를 변수화 합니다.
        var bntBall = document.getElementById('ball');
        var bntStrike = document.getElementById('strike');
        var bntRestart = document.getElementById('restart');

        var ball = document.getElementById('b');
        var strike = document.getElementById('s');
        var out = document.getElementById('o');

        // 2. 각 카운트용 변수 작성
        var cntBall = 0;
        var cntStrike = 0;
        var cntOut = 0;

        // 3. 버튼 클릭에 대한 이벤트리스너 작성
        bntBall.addEventListener('click', bclick);
        bntStrike.addEventListener('click', sclick);
        bntRestart.addEventListener('click', rclick);

        function bclick() {
            cntBall += 1;
            alert(cntBall + " ball!!");
            if (cntBall == 4) {
                cntBall = 0; cntStrike = 0;
            }
            document.getElementById('b').innerHTML = cntBall;
            document.getElementById('s').innerHTML = cntStrike;
        }

        function sclick() {
            cntStrike += 1;
            alert(cntStrike + " strike!!");
            if (cntStrike == 3) {
                cntBall = 0;
                cntStrike = 0;
                cntOut += 1;
                alert(cntOut + " Out!!");
                if (cntOut == 3) {
                    cntBall = 0; cntStrike = 0; cntOut = 0;
                    alert(cntOut + " Out GameOver!!");

                    document.getElementById('restart').style.display = 'inline';
                    bntBall.disabled = true;
                    bntStrike.disabled = true;
                }
            }
            document.getElementById('b').innerHTML = cntBall;
            document.getElementById('s').innerHTML = cntStrike;
            document.getElementById('o').innerHTML = cntOut;
        }

        function rclick() {
            bntRestart.style.display = 'none';
            bntBall.disabled = false;
            bntStrike.disabled = false;
        }
    </script>
</body>

 

+ Recent posts