JavaScript - 5 [EventListener, if else 구문]
EventListener
: 지정한 이벤트가 대상에 전달 될때마다 호출할 함수를 설정한다.
DOM 객체 대부분에서 호출할수 있는 것같다.
JS는 이벤트가 일어나면 이벤트이름에 해당하는 인자를 받는 함수들에 항상 보내준다.
target.addEventListener("type", function);
- 아래코드에서 addEventListener 부분에서 handClick이 handClick() 이렇게 적혀있었다면
"click" 이라는 이벤트를 기다리기전에 바로 함수를 실행한다.
console.dir(document);
// id가 title인 것을 찾을 때
let title = document.querySelector("#title");
// className이 title인 것을 찾을 때
let classTitle = document.querySelector(".title");
function handleClick(){
title.style.color = "green";
}
title.addEventListener("click", handleClick);
classTitle.innerHTML = "Hi classTitle";
window.addEventListener("resize", 함수이름)
- resize 이벤트가 생성되면 함수이름에 해당하는 일들이 일어난다.
let title = document.querySelector(".title");
function resized (){
title.style.color = "red";
title.innerHTML = "wow";
}
window.addEventListener("resize", resized);
이벤트 인자를 받으면 해당 이벤트의 이름을 출력해보려고 했는데 잘 안됐다;
let title = document.querySelector(".title");
function handleResize (event){
console.log(`Happening! ${event}!!`);
}
window.addEventListener("resize", handleResize);
이외 다양한 이벤트들을 알아보고 써먹고 싶다면
developer.mozilla.org/ko/docs/Web/Events
이벤트 참조
DOM 이벤트는 발생한 흥미로운 것을 코드에 알리기 위해 전달됩니다. 각 이벤트는 Event 인터페이스를 기반으로한 객체에 의해 표현되며 발생한 것에 대한 부가적인 정보를 얻는데 사용되는 추가
developer.mozilla.org
if else 구문
- 완벽하게 자바와 같다.
if (조건문) {
} else if (조건문2) {
} else {
}
if(20 <= 5){
console.log("20이 더 큽니다.");
} else if("Doodream" === "Doodream"){
comsole.log("Same");
} else {
console.log("nothing");
}
이 코드에서 '===' 라는 비교연산자를 처음보았다. JS에서 이코드는 무려!! 객체를 깊게 비교해준다.
즉, String이 완벽하게 같은 문자열인지 비교해주고 다른 object들도 같은지 비교해준다.
let object = {
name : "doodream"
}
if(20 <= 5){
console.log("20이 더 큽니다.");
} else if("Doodream" === "Doodream"){
console.log("Same");
let isSame = object === object;
console.log(isSame);
} else {
console.log("nothing");
}
보라 객체를 그냥 비교해버리지 않나;; 자바 같으면 Objects.deepEquals(객체1, 객체2); 이렇게 비교할텐데
이걸 === 이렇게 끝내네;
이외 비교연산자들도 java와 같다. &&, ||, true, false도 같다. !true = false
if(true && true){
console.log(`&&`);
}
if(!true || !true){
console.log(`fail`);
}else{
console.log('||');
}
if else와 이벤트를 이용한 간단한 구현이다.
const title = document.querySelector(".title")
const BASE_COLOR = "rgb(163, 79, 79)";
const CHANGE_COLOR = "rgb(153, 218, 101)";
function handClick(){
const titleColor = title.style.color;
if(titleColor === BASE_COLOR){
title.style.color = CHANGE_COLOR;
}else{
title.style.color = BASE_COLOR;
}
}
function init(){
title.style.color = BASE_COLOR;
title.addEventListener("mouseenter", handClick);
}
init();