문서 객체 조각하기
HTML을 작성할 때 tag를 이용해 작성하게 된다. 하나의 tag를 요소라고 부르는데 JS에서 요소를 문서 객체라고 부른다.
DOMContentLoaded 이벤트
HTML head tag 내부에 script tag를 사용하면 body 안에 있는 요소들을 JS는 접근할 수 없게 된다. 그러한 이유는 script tag가 body tag보다 위에 작성 되어 있기 때문에 브라우저가 HTML 파일을 읽을 때 아직 생성도 되지 않은 body 안에 있는 요소에 접근하는 것이기 때문이다. 이러한 문제를 해결하기 위해서 DOMContentLoaded 이벤트를 사용해 문서 객체를 전부다 읽고 나서 script가 실행되게 해준다.
문서 객체 가져오기
JS에서 HTML 요소에 접근할 수 있는 방법은 여러가지가 있는데 id, class, tag, type, 후손을 다 선택할 수 있는 querySelector() 메서드를 사용하면 편하다. 인수는 문자열로 작성해야 한다.querySelector() 메서드는 여러 중복 태그가 있어도 맨 처음에 있는 태그를 선택하는 것이다. querySelectorAll()메서드는 중복되는 요소들 전체를 선택한다.




이 름 | 선택자 형태 | 설명 |
태그 선택자 | 태그명 | 특정 태그를 가진 요소를 추출한다. |
아이디 선택자 | #아이디명 | 특정 id 속성을 가진 요소를 추출한다. |
클래스 선택자 | .클래스명 | 특정 class 속성을 가진 요소를 추출한다. |
속성 선택자 | [속성=값] | 특정 속성 값을 갖고 있는 요소를 추출한다. |
후손 선택자 | 선택자_A 선택자_B | 선택자_A 아래에 있는 선택자_B를 선택한다. |
글자 조작 및 스타일 조작
querySelector() 메서드로 문서 객체를 선택한 다음 innerHTML, textContent 속성을 사용하면 HTML에 글자를 동적으로 추가할 수 있다.
innerHTML 속성은 문자열을 작성할 때 HTML 태그를 작성하면 태그까지 적용 되는 속성이고, textContent 속성은 입력된 문자열을 그대로 출력한다. innerText 프로퍼티도 있는데 예전 브라우저에 사용했던 프로퍼티로 선능이 textContent보다 좋지 않아 사용빈도가 줄었다.
스타일 조작을 위해서는 style 프로퍼티를 사용하면 된다. style.CSS 속성을 작성해줘야 하는데 CSS 속성 작성할 때는 캐멀 케이스로 작성해줘야 JS가 인식할 수 있다. 원래 CSS에서 background-color 작성 했던 걸 JS에서는 backgroundColor 해줘야 된다는 것이다.


문서 객체 생성 및 속성 조작
문서 객체를 생성하는 메서드는 document.createElement(태그이름) 이다. 이 메서드를 이용하면 HTML 파일에 안 만든 태그를 생성할 수 있다. 생성만 했다고 브라우저에 보이는 것이 아닌 appendChild() 메서드를 이용해 새로 만든 태그를 body 안에 있는 태그 안에 지정해줘야 브라우저에 보이게 된다. 근데 input 이나 img 태그들은 속성을 가자고 그 속성으로 타입을 정하고 이미지 파일 경로를 지정할 수 있다. 속성을 추가하기 위해서는 setAttribute(속성 이름, 속성 값) 메서드를 이용하면 된다.


이벤트 설정
브라우저에서 마우스 클릭, 키보드 입력을 했을 때 반응하여 이벤트가 실행 된다. 이러한 이벤트를 만들기 위해서는 addEventListener() 메서드를 사용해야 한다. 첫 번째 인수로는 클릭, 키보드 입력 같은 어떤 이벤트에 실행 될 것인지 작성해주고, 두 번째 인수는 이벤트 실행할 함수를 넣으면 된다. 이러한 함수를 이벤트 핸들러라고 부른다.
이벤트 핸들러 함수의 매개변수로 event가 있다. 이 매겨변수를 이용해 이벤트 발생 객체를 확인하거나(event.currentTarget) 기본 이벤트를 막을 수도 있다(event.preventDefault()). 기본 이벤트를 막는 것은 이미지 파일에서 우클릭이나, submit 태그로 정보를 넘길 때 새로 고침을 막는 다는 말이다.
구문 오류와 예외
JS에는 2가지 오류가 존재한다. 하나는 코드가 실행되지 않는 구문 오류이고, 나머지는 코드 실행 중간에 발생하는 예외이다. 구문 오류는 메서드 및 함수 작성할 때 괄호, 중괄호의 쌍이 맞지 않거나 문자열 따옴표 쌍이 맞지 않을 때 syntaxError가 발생하는 것이다. 예외는 실행 중 발생하는 오류로 syntaxError를 제외한 모든 오류가 예외로 분류 된다.
예외 처리
기본 예외 처리는 조건문 if를 사용해 한다. 조건이 맞으면 실행하고 아니면 실행 안 하는 단순한 구조이다. 기본 예외 처리 대시 try catch finally 예외 처리를 주로 많이 사용한다. try는 예외 발생 가능성이 있는 코드를 작성하고, catch에는 예외 발생 했을 때 실행할 코드를 작성한다. finally는 써도 되고 안 써도 되지만 사용하면 무족건 실행할 코드를 작성하는 구간이다.
예외가 발생했을 때 예외에 관한 정보를 확인 할 수 있는데 예외 객체라고 한다. 예외 객체는 catch(e)의 'e'가 예외 객체이다. 예외 객체에는 name, message 프로퍼티가 있어 e.name, e.message로 예외 이름과 메시지를 확인할 수 있다.
숙제

