> 웹 프론트엔드 > JS 튜토리얼 > JS에서 DOM 노드를 사용하는 방법

JS에서 DOM 노드를 사용하는 방법

php中世界最好的语言
풀어 주다: 2018-06-01 14:32:49
원래의
1291명이 탐색했습니다.

이번에는 JS에서 DOM 노드를 사용하는 방법과 JS에서 DOM 노드를 사용할 때 주의 사항이 무엇인지 알아보겠습니다.

DOM 작업은 JS에서 매우 일반적이라고 할 수 있습니다. 일부 요소의 추가 및 삭제와 같은 웹 페이지의 많은 작은 기능 구현은 JS로 구현할 수 있습니다. 그렇다면 일부 기능을 구현하려면 DOM에서 무엇을 알아야 할까요? 오늘 글에서는 JS에서의 DOM 연산에 대해 간략하게 소개하겠습니다! !

1. DOM 트리의 노드

1. DOM 노드는 요소 노드(라벨 노드), 속성 노드, 텍스트 노드의 세 가지 범주로 나뉩니다.

속성 노드와 텍스트 노드는 모두 요소 노드의 하위 노드입니다. 따라서 동작 시에는 요소 노드를 먼저 선택한 후 속성과 텍스트를 수정해야 합니다.

【요소 노드 보기】

1. getElement 시리즈 메소드를 사용합니다.

구체적인 HTML 코드는 다음과 같습니다.

//通过ID来查看元素属性
var li = document.getElementById("first"); 
//通过类名来查看元素属性
var lis1 = document.getElementsByClassName("cls");
//通过名字来查看元素属性
var lis2 = document.getElementsByName("name");
//通过标签名来查看元素属性
var lis3 = document.getElementsByTagName("li");
로그인 후 복사

주의:

① ID는 동일한 이름을 가질 수 없습니다. , 첫 번째 것만 얻을 수 있습니다.

② 요소 노드를 얻을 때 DOM 트리가 로드될 때까지 기다려야 합니다.

두 가지 처리 방법:

a. 문서 끝에 JS를 작성합니다.

b. window.onload 함수에 코드를 작성합니다.

3 getElements 시리즈를 통해 얻은 데이터는 배열 형식이어야 합니다. 연산 중 얻은 각 요소에 대해 연산을 수행할 수 있지만 배열을 직접 연산할 수는 없습니다.

document.getElementsByTagName("li")[0].click = function(){}
로그인 후 복사

4 이 일련의 방법에서는 먼저 DOM 노드를 선택한 다음 선택한 DOM 노드에서 필요한 노드를 선택할 수도 있습니다.

document.getElementById("p1").getElementsByTagName("li");
로그인 후 복사

[querySelector 시리즈 방법을 통해]

① 선택기 이름을 전달하고 반환합니다. 첫 번째 요소가 발견되었습니다. 일반적으로 ID를 찾는 데 사용됩니다.

var dq1 = document.querySelector("#id");
로그인 후 복사

② 선택자 이름을 전달하고 찾은 요소를 모두 반환합니다. 발견된 요소 수에 관계없이 배열 형식으로 반환됩니다. 이 방법은 더욱 다양하며 모든 속성을 정확하게 찾을 수 있습니다.

var dqs1 = document.querySelectorAll("#p1 li");
로그인 후 복사

【설정된 속성 노드 보기】

1. 속성 노드 보기: .getAttribute("속성 이름");

2 속성 노드 설정: .setAttribute("속성 이름", "속성 값") ;

참고: .setAttribute()는 이전 버전의 IE에서 호환성 문제가 있을 수 있으므로 대신 . 기호를 사용할 수 있습니다.

【JS가 CSS를 수정하는 다양한 방법】

1. 클래스와 스타일을 설정하려면 setAttribute를 사용하세요.

document.getElementById("first").setAttribute("class","class1");
document.getElementById("first").setAttribute("style","color:red;");
로그인 후 복사

2. 클래스 선택기를 추가하려면 .className을 사용하세요.

document.getElementById("first").className = "class1";
로그인 후 복사

3. 단일 스타일을 직접 수정하려면 .style.style을 사용하세요. 스타일 이름은 camelCase 표기법을 사용해야 합니다.

document.getElementById("first").style.fontSize = "18px";
로그인 후 복사

4. .style 또는 .style.cssText를 사용하여 직렬 수준 스타일을 추가하세요.

// IE不兼容
document.getElementById("first").style = "color:red;"; 
//所有浏览器兼容
document.getElementById("first").style.cssText = "color:red;";
로그인 후 복사

【텍스트 노드 보기/설정】

1: 노드에서 HTML 코드를 가져오거나 설정하세요.

2. .innerText: HTML 코드에서 텍스트를 가져오거나 설정할 수 없습니다.

2. 계층적 노드 작업

1. .childNodes: 현재 노드의 모든 하위 노드를 가져옵니다(요소 노드 및 텍스트 노드 포함).

.children: 현재 노드의 모든 요소 하위 노드를 가져옵니다(텍스트 노드 제외).

2. .parentNode: 현재 노드의 상위 노드를 가져옵니다.

3. .firstChild: 캐리지 리턴과 같은 텍스트 노드를 포함하여 첫 번째 하위 노드를 가져옵니다.

.firstElementChild: 첫 번째 요소 노드를 가져옵니다. 텍스트 노드를 포함하지 않습니다.

.lastChild: 캐리지 리턴과 같은 텍스트 노드를 포함하여 마지막 하위 노드를 가져옵니다.

.lastElementChild: 마지막 하위 노드를 가져옵니다.

4. 현재 노드의 이전 형제 노드(텍스트 노드 포함)

.previousElementSibling: 현재 노드의 이전 요소 형제 노드를 가져옵니다.

.nextSibling: 텍스트 노드를 포함하여 현재 노드의 다음 형제 노드를 가져옵니다.

.nextElementSibling: 현재 노드의 다음 요소 형제 노드를 가져옵니다.

5. .attributes: 현재 노드의 모든 속성 노드를 가져옵니다. 배열 형식을 반환합니다.

【새 노드 생성 및 추가】

1. document.createElement("레이블 이름"): 새 노드를 생성하고 생성된 새 노드를 반환합니다.

새 노드에 대한 속성을 설정하려면 .setAttribute()와 협력해야 합니다.

2. 상위 노드.insertBefore(새 노드, 대상 노드): 상위 노드에서 대상 노드 앞에 새 노드를 삽입합니다.

Parent node.appendChild(새 노드): 상위 노드 끝에 새 노드를 삽입합니다.

3. 소스 node.cloneNode(true): 노드를 복제합니다.

true로 전달하는 것은 소스 노드와 소스 노드의 모든 하위 노드를 복제하는 것을 의미합니다.

false로 전달하거나 그렇지 않으면 하위 노드가 아닌 현재 노드만 복제하는 것을 의미합니다.

【노드 삭제, 교체】

1. 부모 노드.removeChild(자식 노드) : 부모 노드에서 지정된 자식 노드를 삭제합니다.

2. 상위 노드.replaceChild(새 노드, 이전 노드): 상위 노드에서 이전 노드를 새 노드로 바꿉니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

JS 없이 메뉴 열기 및 닫기

id를 통해 목록 페이지에서 세부 페이지로 이동하는 vue 작동 방법

위 내용은 JS에서 DOM 노드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿