-
이것저것 해보려고
이 페이지를 만들었어요
-
그런데
좀 지루하네요
-
내용도 없고
-
이 버튼은 눌러도
아무 반응이 없어요
-
이 버튼을 인터랙티브하게
만들어 볼거에요
-
사용자가
버튼을 클릭하면
-
버튼 안의 문구가
바뀌게 할거에요
-
첫번째는
요소를 찾는거에요
-
우리가 이벤트에
반응할 요소 말이에요
-
이 경우엔
그 요소는 버튼이죠
-
그리고 버튼은
클릭이 가능해요
-
그래서 우리는
clickerButton변수를 만들고
-
document.getElementById
를 이용해서
-
값을 받아오고
이 변수에 저장할 거에요
-
다음 단계는
함수를 정의해서
-
클릭이 발생하면
호출되게 하는 거에요
-
이 함수는
onButtonClick이라고 하고
-
비어있는 함수를
여기 정의해둘게요
-
당연히 뭔가를
채워야해요
-
아니면 별로 재미없는
함수가 될테니까요
-
이 버튼의 문구를
바꾸려면
-
clickerButton의 값을 이용해
textContent에 넣어주면 돼요
-
"Oh wow, you clicked me"
라고 해보죠
-
와
행복한 버튼이에요!
-
많은 코드는 아니지만
더 복잡하게 만들 수 있어요
-
이게 작동된다면요
-
우리가 쓴 코드가 한 건
변수를 정의한 것 뿐이에요
-
그래서 버튼을 눌렀을 때
아직 아무것도 일어나지 않아요
-
마지막 단계는
모든 걸 합치는 거에요
-
그래서 브라우저에게
우리가 만든 함수를 호출하라고
-
우리가 찾아둔 버튼이
클릭이 될 때마다 말이죠
-
이건 이벤트 리스너를
버튼에 추가해서 구현할 수 있어요
-
clickerButton.addeventlistener
처럼요
-
그리고 이 방법에는
두 가지의 인자를 전달해야해요
-
첫번째는 이벤트의 이름
'click'
-
두번째는 우리가 호출하려는
함수의 이름이에요
-
클릭할 때 호출되는 함수죠
'onButtonClick'
-
이걸 잠시 멈추고
버튼을 한번 클릭해보세요
-
동작하나요?
-
그랬으면 좋겠네요
전 동작하거든요
-
이 함수가 어떻게
작동되는 지에 대해 얘기해보죠
-
약간 어려울 수 있거든요
-
이 함수를
이벤트 리스너 함수라고 하거나
-
콜백 함수라고 해요
그게 사용되고 있는 방법이니까요
-
이 함수가 이벤트가 일어나면
호출(콜)되길 원해요
-
보통 페이지 로드될 때
이게 호출되길 원하진 않잖아요
-
만약에 페이지가 로드될 때
호출되게 하고 싶다면
-
여기 아래에 한 줄을
이렇게 추가해야 할거에요
-
함수이름 뒤에 괄호를 쓰는걸
기억하세요
-
이 괄호로
함수를 호출하는 거에요
-
이걸 내버려두면
함수를 호출하는게 아니라
-
그냥 참조하는 거에요
-
그건 이렇게 인자를
전달하고 싶을 때 하는 거에요
-
이건 그냥 브라우저에게
이렇게 말해주는 거에요
-
"여기 나중에 호출할 함수가 있어.
지금은 말고"
-
그러니까 괄호를 여기에는
적지 않도록 해요
-
이 함수 이름 뒤에요
-
왜냐하면 함수 자체가 아니라
함수의 리턴값을 전달하는 거니까요
-
실수로 그렇게 했다면
-
이 버튼은 페이지가 로드될 때
바뀌고 다음엔 바뀌지 않을 거에요
-
고치려면
여기 괄호만 지우면 돼요
-
실수로 추가했던 것을요
-
이제 이 함수는 클릭될 때만
호출될 거에요
-
한 가지
다른 방법은
-
여기 익명의 함수를
넣어주는 거에요
-
익명 함수는
미리 정의된 이름은 없지만
-
명령어 안에
구현된 함수에요
-
이 addEventListener부분을
복사해서 붙여넣기 할게요
-
그리고 이 방법을
하나씩 보여줄게요
-
그럼 무슨 뜻인지
알 수 있을 거에요
-
이 함수 이름을 지우고
-
함수 정의로 대체할게요
-
여기 붙여넣고
-
좋아요
-
이 두 라인의 코드는
정확히 똑같은 일을 해요
-
음
거의 같게요
-
두 개 모두 함수를
전달해요
-
같은 내용의 함수를요
-
차이점은 첫번째 것은
-
위에 미리 정의해 둔 함수를
전달하는 것이고
-
두번째 것은
익명 함수를
-
명령어 속에 정의함과
동시에 전달하는 거에요
-
두 방법 모두 작동해요
-
많은 개발자들은
미리 정의된 함수를 선호해요
-
왜냐하면 코드가 읽기 쉽고
-
디버깅도 쉽고
-
미리 정의된 함수를
여러 번 호출하고
-
다른 이벤트에서도
호출할 수 있으니까요
-
어떤 방법을 쓰든지
여러분 마음이에요
-
두 개를 동시에
사용하지는 마세요
-
브라우저는 클릭이 발생할 때
두 개 모두를 호출할 것이고
-
두 번 부를 이유가 없으니까요
-
앞으로 가서
익명 함수를 지울게요
-
전 첫번째 방법이
더 좋으니까요
-
이제 여러분은 많은 것을
할 수 있게 되었어요
-
이벤트 리스너를
추가할 수있게 되었으니까요
-
페이지의 더 많은 부분에
추가해 볼 수도 있고
-
다른 이벤트를
사용해 볼 수도 있고
-
다음 시간에
다뤄볼 거에요
-
DOM을
수정해 볼 수도 있어요
-
전에 배운 방법들로요
-
그리고 반응했던
요소 말고도
-
페이지의 다른 것들도
수정할 수 있어요
-
한번 해보세요
-
여러분이 할 수 있는 것을
찾아봐요