🤷♀️ 그래서 이게 대체 무슨 말이고, 왜 알아야 하는가?
👻 자, 내가 HTML을 만들었다. 그리고 예쁘게 CSS도 입혔다. 그리고 JS도 쪼금 배웠다. 그런데 JS로 동작을 하게 하려면 HTML로 만들어 놓은 그 버튼을 내가 JS로 터치할 수 있어야 하는게 아닌가. 이 때 이를 가능하게 해 주는게 DOM이라고 할 수 있다. 그러면 그 뒤에 나오는 '구조화된 nodes와 property와 method 를 갖고 있는 objects'는 무슨 말인가?.. 당황하지 말고 살펴보자.
위 사진의 예제에서, 만약에 내가 head에 접근하고 싶다면?
document.firstElementChild.firstElementChild;
위와 같은 코드로 접근할 수 있다.
예를 들어, button 대신 차(car)가 오브젝트라고 해보자. 우리의 차는 다음과 같이 어떤 속성을 가질 수 있고, 어떤 동작을 할 수도 있다.
오브젝트 : 🚘
👉 프로퍼티 : 색깔, 좌석 수, 문의 개수 등
👉 메소드 : 브레이크(), 운전(), 주차()
위와 같이 표현할 수 있을 것이다.
그럼 다시 버튼으로 올아와서,
버튼의 프로퍼티와 메소드는 어떤 것들이 있을까?
오브젝트 : 🧤버튼
👉프로퍼티 : innerHTML, style, firstChild
👉메소드 : click(), appendChild(), setAttribute()
document.getElementsByTagName("li");
// HTMLCollection(3) [li.list, li.list, li.list]
document.getElementsByTagName("li")[2].style.color="red";
// 리스트로 출력이 되기 때문에 꼭 인덱스를 지정해 줘야 한다.
document.getElementsByTagName("li").length
// 리스트이기 때문에 배열처럼 길이를 구하는 것도 가능하다.
document.getElementsByClassName("btn");
// HTMLCollection[button .btn]
// **그 클래스를 가진 요소가 하나더라도 리스트로 반환해 준다.**
document.getElementsByClassName("btn")[0].style.color;
// 복수로 불렀기 때문에 동일하게 리스트이다. 따라서 []index를 꼭 사용하여 접근해야 한다.
document.getElementById("title");
// <h1 id="title">Hello</h1>
document.getElementById.innerHTML = "goodbye";
//단순하게 접근하여 주면 된다.
document.querySelector("h1");
document.querySelector(".btn");
// selector를 합칠 수도 있다.
document.querySelector("li a");
document.querySelector("li.item");
document.querySelectorAll("li")
// NodeList(3) [li.list, li.list, li.list]
document.querySelectorAll("li")[1].style.backgroundColor="aqua";
// 리스트로 반환하기 때문에 index를 사용하여 접근해야 한다.
<h1><strong>Hello</strong></h1>
document.querySelector("h1").innerHTML = "Minju";
// <h1>Minju</h1>
document.querySelector("h1").textContent = "Minju";
// <h1><strong>Minju</strong></h1>
document.querySelector("a").attributes;
// 속성들을 모두 보여준다.
document.querySelector("a").getAttribute("href");
// href가 가리키고 있는 링크를 반환해준다.
document.querySelector("a").setAttribute("href", "http://www.bing.com")
// setAttribute는 두 개의 파라미터를 필요로한다. 변경할 것과, 변경후의 속성.