>  기사  >  웹 프론트엔드  >  JavaScript 지식 포인트 수집: 요소 및 노드 획득

JavaScript 지식 포인트 수집: 요소 및 노드 획득

WBOY
WBOY앞으로
2022-05-16 17:58:572382검색

이 기사에서는 javascript에 대한 관련 지식을 제공합니다. ID, 클래스 이름, 이름, 태그 이름, 생성, 삭제, 복제를 통한 요소 획득을 포함하여 요소 및 노드 획득에 대한 관련 콘텐츠를 주로 소개합니다. 노드와 같은 문제에 대해서는 아래 내용을 살펴보세요. 모든 사람에게 도움이 되기를 바랍니다.

JavaScript 지식 포인트 수집: 요소 및 노드 획득

【관련 추천: javascript 비디오 튜토리얼, web front-end

Get elements

  • Get by ID(getElementById)
  • 이름 속성별(getElementsByName) )
  • By 태그 이름(getElementsByTagName)
  • 클래스 이름으로 요소 가져오기(getElementsByClassName)
  • 선택기로 요소 가져오기(querySelector)
  • 선택기로 요소 집합 가져오기(querySelectorAll) ​​​​
  • HTML 메소드 가져오기( document.documentElement)
  • 본문을 가져오는 메소드(document.body)

1 ID로 가져오기(getElementById)

// 1 获取元素节点
    // 通过id的方式( 通过id查找元素,大小写敏感,如果有多个id只找到第一个)
    document.getElementById('p1');

  • 컨텍스트는 문서여야 합니다.
  • 매개변수를 전달해야 합니다. 매개변수는 문자열 유형이며 요소의 ID를 얻는 데 사용됩니다.
  • 반환 값은 하나의 요소만 가져오고, 찾을 수 없으면 null을 반환합니다.

2. 클래스 이름별(getElementsByClassName)

    // 通过类名查找元素,多个类名用空格分隔,得到一个HTMLCollection(一个元素集合,有length属性,可以通过索引号访问里面的某一个元素)
    var cls = document.getElementsByClassName('a b');
    console.log(cls);
  • 매개변수는 요소의 클래스 이름입니다.
  • 반환 값은 배열과 유사하며, 찾을 수 없으면 빈 배열이 반환됩니다.

3. 이름 속성(getElementsByName)을 통해

 // 通过name属性查找,返回一个NodeList(一个节点集合,有length属性,可以通过索引号访问)
   var nm =  document.getElementsByName('c');
    console.log(nm);

4. 태그 이름(getElementsByTagName)을 통해

    // 通过标签名查找元素 返回一个HTMLCollection
    document.getElementsByTagName('p');
.
  • 매개변수는 요소를 가져오는 것입니다. 태그 이름 속성은 대소문자를 구분하지 않습니다.
  • 반환 값은 클래스 배열입니다. 찾을 수 없으면 빈 배열이 반환됩니다.

5. 선택기(querySelector)를 통해 요소를 가져옵니다.

document.querySelector('.animated')
  • 매개변수는 다음과 같은 선택기입니다. .클래스이름".
  • 단일 노드를 반환하고, 일치하는 요소가 여러 개 있으면 첫 번째 노드를 반환합니다.

6. 선택기(querySelectorAll)를 통해 요소 집합을 가져옵니다.

document.querySelector('.animated')
  • 반환 값은 배열과 유사합니다.

노드 가져오기

DOM(문서 개체 모델)에서 각 노드는 개체입니다. DOM 노드에는 세 가지 중요한 속성이 있습니다.

1. Nodename: 노드 이름

2. NodeValue: 노드의 값

3. Nodetype: 노드 유형

1 , nodeName 속성: 읽기 전용인 노드의 이름입니다.

  • 요소 노드의 nodeName은 라벨 이름과 동일합니다.
  • 속성 노드의 nodeName은 속성의 이름입니다.
  • 텍스트 노드의 nodeName은 항상 #text
  • 문서의 nodeName입니다. 노드는 항상 #document

2. nodeValue 속성 : 노드의 값

  • 요소 노드의 nodeValue가 정의되지 않거나 null입니다.
  • 텍스트 노드의 nodeValue는 텍스트 자체입니다
  • 의 nodeValue 속성 노드는 속성

의 값입니다. 3. nodeType 속성: 노드의 유형이며 읽기 전용입니다. 일반적으로 사용되는 노드 유형은 다음과 같습니다.

  • 요소 유형 노드 유형
  • 요소 1
  • 속성 2
  • Text 3 공백도 3
  • Comment 8
  • Document 9

을 반환합니다.

1. 노드 생성: createElement('')

 // 创建元素,只是创建出来并未添加到html中,需要与appendChild 配合使用
    var elem = document.createElement('p');
    elem.id = 'test';
    elem.style = 'color: red';
    elem.innerHTML = '我是新创建的节点';
    document.body.appendChild(elem);

2. 노드 삽입: appendChild ()

  • 사용법은 다음과 같습니다. parent.appendChild(child)
  • 는 하위 노드를 상위 노드에 추가합니다. 마지막
  • 자식 노드가 이미 존재하는 경우 원래 노드는 제거되고 끝에 새 노드가 추가되지만 이벤트는 유지됩니다
 var oNewp=document.createElement("p");
      var oText=document.createTextNode("World Hello");
      oNewp.appendChild(oText);

2-1. 노드 삽입: insertBefore()

  • 用法是 parent.insertBefore(newNode,refNode);
     var oOldp=document.body.getElementsByTagName("p")[0];
      document.body.insertBefore(oNewp,oOldp);

  删除节点

1.删除节点:removeChild

  • 用法是:parent.removeChild(child) 
  • 如果删除的不是父元素的子节点会报错
   var op=document.body.getElementsByTagName("p")[0];
         op.parentNode.removeChild(op);

   克隆节点

1.克隆节点:parent.cloneNode() false 或者true

  • 克隆节点(需要接受一个参数来表示是否复制元素)
  // 克隆节点(需要接受一个参数来表示是否复制元素)
    var form =  document.getElementById('test');
    var clone = form.cloneNode(true);
    clone.id = 'test2';
    document.body.appendChild(clone);

   替换节点

1.替换节点 方法node.replace(new,old) 

       var oOldp=document.body.getElementsByTagName("p")[0];
       oOldp.parentNode.replaceChild(oNewp,oOldp);

  文档碎片框 

  • 作用:当向document中添加大量的节点时,如果逐个添加将会十分缓慢,这时可以使用文档碎片一次性添加到document中
  • 语法:document.createDocumentFragment();
  • 承载节点
 (function()
    {
        var start = Date.now();
        var str = '', li;
        var ul = document.getElementById('ul');
        var fragment = document.createDocumentFragment();
        for(var i=0; i<10000; i++)
        {
            li = document.createElement('li');
            li.textContent = '第'+i+'个子节点';
            fragment.appendChild(li);
        }
        ul.appendChild(fragment);
        console.log('耗时:'+(Date.now()-start)+'毫秒'); // 63毫秒
    })();

【相关推荐:javascript视频教程web前端

위 내용은 JavaScript 지식 포인트 수집: 요소 및 노드 획득의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제