dev-story

[JavaScript] #09_ Event 본문

[프론트엔드]/JavaScript

[JavaScript] #09_ Event

진코딩 2022. 4. 14. 23:18

이벤트 설정 방법

고전 이벤트 모델
요소에 먼저 접근해서 속성 추가
이벤트 객체를 제거하려면 속성 값에 null을 넣어주기(속성 = null )

클릭 시 이벤트 설정
var h = document.getElementById(‘id명‘);
h.onclick = function(){
           수행 기능 설정;
           h(this).onclick = null;    // 한 번만 실행
};
	<button id='test1'>test1 실행확인</button>
	<button id='test2'>test2 실행확인</button>
	<script>
		var test1 = document.getElementById('test1');
		var test2 = document.getElementById('test2');
		
		test1.onclick = function(){
			console.log('test1이 실행되었습니다.');
		}
		
		test2.onclick = function(){
			console.log('test2가 실행되면서 test1이벤트를 삭제하였습니다.');
			test1.onclick = null;
		}

함수 이름으로 연결

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

여러 이벤트 동시 연결

		test2_1.onmouseover = function(){
			console.log('여러 이벤트 동시 연결 가능')
		}

이벤트 발생 객체는 핸들러 내부에서 this로 표현한다. (스타일 변경이 가능)

 

 

 

 

 

 

 

인라인 모델

: 요소 내부안에 이벤트 작성

클릭 시 이벤트 설정할 때

<h1 onclick=‘처리로직’></h1>               또는             <h1 onclick=‘스크립트 내 함수 호출‘></h1>
	<button onclick='test4();'>test4 실행확인</button>
	<button onclick='alert("test4가 실행되었습니다.")'>test4 실행확인</button>
	<script>
		function test4(){
			alert('test4가 실행되었습니다.')
		}

 

표준 이벤트 모델

addEventListener(연결할 이벤트, 연결할 함수)       :이벤트 확장
removeEventListener(이벤트이름, 함수)                :이벤트 제거

	<script>
		var test5 = document.getElementById('test5');
		var test6 = document.getElementById('test6');
		
		function fn_test5_1(){
			console.log('test5가 클릭됐습니다.');
		}
		
		function fn_test5_2(){
			console.log('test5에 들어왔습니다.');
		}
		
		test5.addEventListener('click', fn_test5_1);
		test5.addEventListener('mouseover', fn_test5_2);
		
		test6.addEventListener('mouseover', function(){
			console.log('test6에 들어오면서 test5의 클릭이벤트를 제거했습니다.');
			test5.removeEventListener('click', fn_test5_1);
		});
	</script>

 

****기본 이벤트 제거*****

1)  onclick

	<form>
		<label>이름: </label><input type='text' name='name' id='name'><br>
		<label>아이디: </label><input type='text' name='userId' id='userId'><br>
		<label>비밀번호: </label><input type='password' name='password' id='password'><br>
		<label>비밀번호 확인: </label><input type='password' name='passwordConfirm' id='passwordConfirm'>
		<br>
		<input type='submit' value='제출' onclick='return test7();'>
	</form>				<!-- 2) 반환값을 받아와서 true면 넘기고 false면 submit하지 않게 함.-->
	<script>
		function test7(){
			//비밀번호가 서로 같지 않으면 제출이 되지 않게 막기
			var password = document.getElementById('password').value;
			var password2 = document.getElementById('passwordConfirm').value;
			
			if(password == password2){
				alert('비밀번호가 일치합니다.');
				return true;		// 1)
			} else {
				alert('비밀번호가 일치하지 않습니다.');
				return false;		// 1)
			}
		}
	</script>

 

2) onsubmit
: form자체에서 onsubmit으로 리턴값 받아오기

	<form onsubmit='return test8();'>	<!-- form자체에서 onsubmit으로 리턴값 받아오기 -->
		<label>이름: </label><input type='text' name='name' id='name2'><br>
		<label>아이디: </label><input type='text' name='userId' id='userId2'><br>
		<label>비밀번호: </label><input type='password' name='password' id='password2'><br>
		<label>비밀번호 확인: </label><input type='password' name='passwordConfirm' id='passwordConfirm2'>
		<br>
		<input type='submit' value='제출'>
	</form>							
	<script>
		function test8(){
			//비밀번호가 서로 같지 않으면 제출이 되지 않게 막기
			var password = document.getElementById('password2').value;
			var password2 = document.getElementById('passwordConfirm2').value;
			
			if(password == password2){
				alert('비밀번호가 일치합니다.');
				return true;
			} else {
				alert('비밀번호가 일치하지 않습니다.');
				return false;
			}
		}
	</script>

 

728x90

'[프론트엔드] > JavaScript' 카테고리의 다른 글

[JavaScript] querySelector  (0) 2022.04.17
[JavaScript] #10_ 정규표현식  (0) 2022.04.17
[JavaScript] #08_ DOM  (0) 2022.04.14
[JavaScript] #07_ BOM  (0) 2022.04.14
[JavaScript] #06_ window객체  (0) 2022.04.14
Comments