DOM을 제어하는 것 : HTML을 제어하는것

(DOM = document - HTML)

 

*선택자

- 태그를 선택, 변경, 추가, 삭제, 생성 가능하다

-CSS에서는 원래 있는 태그에서만 사용가능 하다

(생성 삭제 가능한 js와의 차이점)

- 선택하는 방법 : 아이디, 클래스, 속성, 태그, 나, +) 부모와 자식, 형제

 

*이벤트*

- Event : 사용자의 행위, 패턴

ex) 클릭, 드래그, 사이즈변경, 마우스 올리거나 내리거나, 키보드 누를때 .

 

 

 

 

 

 

 

< DOM control >

 

 

 

*코드를 작성할때의 편리함을 위해 document를 doc변수에 넣어놓았다,*

 

 

 

 

 

*선택된 태그의 확인을 위해 아래의 함수를 미리 만들어놓았다*

 

 

 

 

 

 

 

1. id로 control하기

getElementById('아이디')

 

 

<HTML>

 

 

<화면>

 

 

 

<실행>

 

 

console.log에 찍으면 태그 자체가 나온다.

 

 

 

 

 

<함수실행>

 

open 이라는 변수에 open이라는 id를 가진 태그를 선택했다.

변수 item이 하나의 객체. item 객체 안에 있는 addEventListener라는 함수를 실행한 것이다.

 

 

 

 

 

 

 

 

 

실행해 보면 item id를 가진 두 태그 중 위의 태그만 item 변수에 선택되어 들어간 것을 볼 수 있다.

 

 

*id가 고유해야 하는 이유*

( 단수 )

 

같은 아이디가 여러개 있을 경우 : 위에서부터 읽어 내려오면서 맨 위에 있는 태그만 js가 잡는다

(CSS-둘다 잡음)

 

그 이유로 getElementById에서 'Element'라는 단수형을 사용한다.

 

 

 

 

 

 

 

 

2 . 태그로 control하기

getElementsByTagName('태그명') ->nodelist반환

 

- 복수라서 Element(단수)가 아닌 Element's' (복수)

- 여러개가 잡히므로 배열과 비슷한 형태로 잡힌다

- 배열과 형태만 비슷할 뿐 배열이 아닌 nodelist 이다.

- index와 길이를 반환한다

 

* node : Element와 비슷한 요소. element를 포함하는 요소이다

 

 

 

<HTML>

 

 

<화면>

 

 

 

<getElementsByTagName 실행>

 

 

배열과 비슷한 형태로 console에 찍힌다.

위에서 부터 찾아서 있는 p를 다 넣는다.

안에 있는 내용.. 정보들이 다 나옴

 

 

길이가 있다.

 

 

 

 

<함수 실행하기>

 

1. 변수명 통째로 함수를 실행할 순 없다.

 

 

 

 

2. 요소 하나하나에 적용해야 한다

 

 

 

 

 

* for문으로 간단하게 나타내기 *

 

 

 

 

 

3. class로 control하기

getElementsByClassName('클래스명') : 여러개 찾기 -> node list 반환

 

 

 

 

 

 

<HTML>

 

 

1)

 

<getElementsByClassName 실행>

 

 

↓nodelist 형태로 여러개가 다 잡힌다.

 

 

 

 

 

 

 

4. querySelector(All)

querySelector('.클래스명 or 태그명 or #아이디') : 하나만 찾기

querySelectorAll ('.클래스명 or 태그명 or #아이디') : 여러개 찾기 -> node list 반환

 

( 아래 코드는 바로 위의 클래스 control의 HTML코드와 같은 것을 사용했다)

 

 

 

 

1)

 

<querySelctor실행>

 

단일 클래스를 찾기 위한것.

뒤의 선택자를 꼭 .class~~ 로 써야한다,

 

 

 

(1) box1찾기 ( 하나만 있는 class )

 

 

 

↓ console에 찍힌 내용

코드 자체가 찍힘

 

 

 

(2) box 찾기 (여러개 있는 class)

 

 

↓ 하나만 찍힘

위에서 아래로 내려가면서 찾다가 가장 먼저 만나는 태그만 변수에 넣는다.

 

 

 

 

2)

<querySelectorAll 실행>

여러개의 태그를 찾는다

 

 

Nodelist로 나타냄.

 

 

 

 

 

 

5. 복합구조

 

 

<HTML>

 

 

 

1. querySelector로 .menu 태그 잡기

 

↓ console.log 찍힌내용

 

 

 

2. ultag내의 li태그를 getElementByTagName로 잡기

 

↓ console.log 찍힌 내용

(nodelist)

 

 

3. litag의 젓번째, 두번째 태그에서 a 태그 잡기

 

 

console찍힌 내용

: nodelist지만 하나만 들어있다.

 

 

함수 실행

 

 

 

 

+ Recent posts