개발자 되는 중/개발 공부

DOM 특강

SeonChoco 2022. 12. 14. 20:19

js 생긴 이유

동적인 웹페이지를 만들기 위해 만들어진 언어

 

페이지 불러오는 과정

1. url로 클라이언트(나 + 브라우저)가 서버에 요청 보냄

2. 요청 받아서 서버에서 클라이언트로 html 보냄

3. 브라우저에서 html을  해석하고 object로 만듦 (파싱) - 해석해주는 엔진이 브라우저 안에 있음

4. dom (document object material) tree 만듦

  • dom으로 만들면 javascript가 알아볼 수 있음
  • dom은 속성과 메소드를 가짐

5. css 있으면 cssom(css object material) tree 만듦

6. dom,  cssom 합쳐서 render tree 만듦

7. 그걸 기계어로 해석? 그런 다음에 브라우저에 뿌려줌? 이라고 들었던 것 같은데

 

속성과 메소드 구분

document.getElementById("demo").innerHTML = "hello world"

getElementById는 메소드

innerHTML은 속성

 

obj = {

age: 27 // 속성

getAge : function() {

cosole.log ('제 나이는 ~이에요');

} //메소드

}

 

obj.age //속성

obj.getAge() //메소드

 

메소드와 함수 구분

obj.getName() //메소드 (호출의 주체가 있음)

testlog() //함수 (호출의 주체가 없음)

 

childNodes 와 parentNode 를 이용해서 document의 속성들을 이리저리 확인해보았다.

 

seletor 3가지

tag

id

class

 

요소 찾아 주는 api

document.getElementbyId

document.getElementsByClassName('subText')[0]

document.getElementsByTagName('h1')[0]

 

document.querySelector('p')

document.querySelector('#headerText')

document.querySelector('.subText')

 

document.querySelectorAll('p')[0]

document.querySelectorAll('#headerText')[0] -id 찾을 때는 # 

document.querySelectorAll('.subText')[0] - class 찾을 때는 .

 

요소 만드는 api

const p = document.createElement('p')

document.body.append(p)

 

요소 내용 바꿔주는 api

element.innerHTML : 태그로 만들어준 요소까지 넣어준다 - 근데 원래 있었던게 사라지네?

element.innerText: 문자만 넣어준다.

ex)

document.querySelectorAll('h1')[0].innerHTML = 'test'

 

element.setAttribute('attribute', 'value')

ex)

document.querySelector('h1').setAttribute('class', 'toYellow')

 

element.addEventlistener('click', function() {});

 

ex)

document.querySelector('button').addEventListener('click', function() {
        document.querySelectorAll('li')[2].innerText = 'test'
});

 

//addeventlistenerf를 써주면 이벤트를 중복해줄 수도 있는 듯

 

document.write('위험한 코드') 

다 날라가고 저 글자만 남음

 

append 와 appendchild 

append는 노드 뿐만 아니라 그냥 문자열도 넣어준다.

appendChild는 노드만 넣어준다.

 

문자열만 넣은 test1을 appendChild로 넣어주려하면 아래와 같은 오류가 난다.

 

'개발자 되는 중 > 개발 공부' 카테고리의 다른 글

인프런 git과 github  (1) 2022.12.14
Git 특강  (0) 2022.12.14
후발대 react  (0) 2022.12.09
후발대 강의- 배열의 메소드  (0) 2022.12.05
후발대 강의 - 배열  (0) 2022.12.05