DOM操作 节点元素 遍历树

DOM,主要用来修改HTML的标准编程接口,可以用来修改各种html标签内容 和属性 样式。

查找:

document: 整个文档。

document.getElementsByTagName

document.getElementById

document.getElementsByClassName

遍历节点:

var div=document.getElementsByClassName('con')[0];

div.parentNode-> 父节点 (最顶端的parentNode为#document);
遍历元素:

div.children 遍历所有的子元素(孙子就不算)这就是一个对象,可以.length属性

获取节点类型:div.firstElementChild.nodeType

.......................总结............................

 节点                   元素节点

div.parentNode; div.parentElement;
.childNodes .children
.firstchild; .firstElementChild;
.lastchild; .lastElementchild;
.nextSibling; .nextElementSibling;
.previousSibling .prevElementSibling;

节点的类型

元素节点 —— 1
属性节点 —— 2
文本节点 —— 3
注释节点 —— 8
document —— 9
DocumentFragment —— 11
获取节点类型 nodeType

  1. 封装函数,返回元素e的第n层祖先元素
var strong=document.getElementsByTagName('strong')[0];
    
    function retparent(elem,n) {
      
    while(elem && n){
       
        elem = elem.parentElement;
        n--;

      }
        return elem;
    } 
    retparent(strong,4);

2.遍历元素节点树

  1. 这个方法只能查到 儿子节点
var div=document.getElementsByTagName('div')[0];
    var arr=[];
    arr.push(div.children);

2.儿子孙子一起遍历

 var div=document.getElementsByTagName('div')[0];
    var child = div.firstChild;

  while(child != div.lastChild){  //判断是否是最后一个
    if(child.nodeType == 1){      //判断是不是元素节点
        console.log( child );
    }
    child = child.nextSibling;
  1. 兼容性 一起遍历
var div=document.getElementsByTagName('div')[0];
var child = div.firstElementChild;     //这是返回第一个元素节点  next就是下一个 孙子也可以返回

while(child){
    console.log( child );
    child = child.nextElementSibling;

var s=div.firstElementChild;
for (var i = 0 ; i <div.children.length; i++) {

    console.log(s);
    s=s.nextElementSibling;
}

3.查找e的第n个兄弟元素

 var strong=document.getElementsByTagName('strong')[0];
      function retSibling(e,n) {
        while(e && n){
            if(n>0){
                e=e.nextElementSibling;
                n--;

            }else{
                e=e.previousElementSibling;
                n++;

            }
        }
          return e;
        }  

4.封装函数insertAfter() 类似于 insertBefore()

var i=document.getElementsByTagName('i')[0];
    var p=document.getElementsByTagName('p')[0];
    var div=document.getElementsByTagName('div')[0];

    Element.prototype.insertAfter = function(targetNode,OriginNode) {

         var afterS=OriginNode.nextElementSibling;
        if (afterS==null) {
             this.appendChild(targetNode);
        }else{
        this.insertBefore(targetNode,afterS);}

    };
  1. 将目标节点内的节点顺序逆序
 var p=document.getElementsByTagName('p')[0];
    var div=document.getElementsByTagName('div')[0];
    function reverse(a) {
         for (var i =a.children.length-2; i >=0; i--) 
         {
            a.appendChild(a.children[i])
  }
    }
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 欢迎关注个人微信公众账号:byodian个人博客:Byodian's Blog JavaScript 基础知识总结...
    工具速递阅读 4,119评论 0 3
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,672评论 0 21
  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 9,084评论 0 7
  • DOM操作一 HTML DOM是HTML Document Object Model(文档对象模型)的缩写HTML...
    Viarotel阅读 3,698评论 0 0
  • 前言:尽管现在有很多优秀的框架,大大简化了我们的DOM操作,但是我们仍然要学好DOM知识来写原生JS,从根本上去理...
    长鲸向南阅读 5,987评论 0 0

友情链接更多精彩内容