티스토리 뷰





반응형

이벤트 활용

이벤트 속성과 이벤트핸들러(함수)를 연동하여 이벤트 발생시 특정기능을 하도록 하는 것


이벤트 설정방법

고전 이벤트 모델

표준 이벤트 모델


고전 이벤트 모델

요소객체가 가지고 있는 이벤트 속성에 이벤트 핸들러를 연결하는 방법

이벤트를 제거할 때는 속성값에 null값을 넣어주면 됨

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

매개변수로 이벤트 정보전달(e, window.event) ->이벤트객체 전달


예) 클릭시 이벤트설정

var h = document.getElementById('id명');

h.onclick = function{

수행기능 설정;

h(this).onclick = null; //한번만 실행

};


<div id="area"></div>
<span id="checkid"></span>
<script>
//고전방식의 이벤트처리
//속성값에 바로 함수(이벤트핸들러) 입력!
onload = function () {
var ar = document.getElementById('area');
ar.onmouseover = function () {
ar.setAttribute('style', 'background-color:tomato; color:aqua;');
ar.appendChild(document.createTextNode('너무 졸립니다.'));
}


표준 이벤트 모델 + ajax 처리

w3에서 공식적으로 지정한 이벤트 모델

한번에 여러가지 이벤트핸들러 설정 가능

this키워드가 이벤트 발생객체 의미


메소드 

내용 

addEventListener(이벤트 이름, 핸들러, 확장) 

확장:버블링/캡쳐링 

removeEventListener(이벤트 이름, 핸들러) 

이벤트 삭제


var h = document.getElementById('id명');

h.addEventListener('click', function(){

수행기능 설정;

};


<div id="area"></div>
아이디입력<input type="text" name="id" id="id">
<span id="checkid"></span>
<script>
//고전방식의 이벤트처리
//속성값에 바로 함수(이벤트핸들러) 입력!
onload = function () {
var ar = document.getElementById('area');
ar.onmouseover = function () {
ar.setAttribute('style', 'background-color:tomato; color:aqua;');
ar.appendChild(document.createTextNode('너무 졸립니다.'));
}
//표준이벤트처리
//addEventListener()등록하여 처리하는것
var sec1 = document.getElementsByTagName('section');
sec1[0].addEventListener('click', function(){
var inImg = document.createElement('img');
inImg.setAttribute('src','https://encrypted-tbn0.gstatic.com/images?q=tbn:
ANd9GcTx1epZGCGpBv98tZKNz8V5MG-rdLl3kS5qmlIY4ChIhzF8WNZHIw');
inImg.setAttribute('width', 200);
inImg.setAttribute('height',200);
sec1[0].appendChild(inImg);
for(var key in e){
console.log(key+" : "+e[key]);
}
console.log("이벤트 발생객체 : "+e.target.tagName);
for(var k in e.target)
{
console.log(k+" : "+e.target[k]);
}
});
}
var inputId = document.getElementById('id');
var id = 'admin';
var checkId = "";
inputId.onkeypress = function (e) {
console.log(this);
console.log(e.key);

var temp = document.getElementById('checkid');
// temp.innerText +=e.key;
checkId += e.key;
if (id == checkId) {
temp.innerText = "중복아이디가 있습니다.";
temp.style.color = 'red';
checkId = "";
} else {
temp.innerHTML = "중복되지 않습니다.";
}
}


기본 이벤트 제거

onsubmit이벤트 속성에 이벤트 핸들러 연결할때 false를 return함

유효성 검사

이벤트 핸들러에 데이터 비교 후 맞지 않으면 false를 리턴




반응형

'front-end > JavaScript' 카테고리의 다른 글

net.sf.json.JSONException: java.lang.reflect.InvocationTargetException  (0) 2019.03.07
JSON를 하나하나 뜯어보자!  (0) 2019.03.02
JavaScript BOM와 DOM  (0) 2018.12.12
JavaScript 객체  (0) 2018.12.10
JavaScript 함수  (0) 2018.12.10
댓글
반응형
최근에 달린 댓글
글 보관함
Total
Today
Yesterday
최근에 올라온 글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31