• 第十章 DOM


    DOM

    DOM(文档对象模型):针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次化的节点树,允许开发人员添加,移除和修改页面的某一部分。

    节点层次

    节点:节点分为几种不同的类型,每种类型分别表示文档中不同的信息及标记。每个节点都拥有各自的特短吧,数据,方法。

    文档元素:文档元素是文档最外层的元素,文档中的其他所有元素都被包裹在文档元素中。在HTML中,文档元素始终是<html>元素。

    HTML元素:元素节点。

    特性: 特性节点。

    文档类型:文档类型节点。

    注释: 注释节点。

     

    Node类型

    JS中的所有类型节点都继承自Node类型,所有节点类型共享相同的基本属性和方法。

    nodeName:  对于元素节点,nodeName中保存的都是元素的标签名,nodeValue的值始终为null.

    nodeValue:  元素的值。

    childNodes: 保存着一个nodeList对象。nodeList是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点。有length属性。

    基于DOM结构动态执行查询的结果,DOM结构的变化能够自动反映在NodeList对象中。

    parentNode:指向childnode的父节点。

    previousSibling: 节点的前一个同胞节点。

    nextSibling: 节点的下一个同胞节点。

     

    操作节点

    插入节点

    appendChild(): 向childNodes列表末尾添加一个节点。

    insertBefore(): 接受俩个参数:要插入的节点, 参照的节点。被插入的节点变成参照节点的前一个同胞节点。

    删除节点

    replaceChild(): 接受俩个参数: 要插入的节点, 要替换的节点。

    removeChild(): 接受一个参数: 移除的节点。

    cloneNode():  复制一个调用这个方法的节点的一个副本。接受一个布尔值参数:表示是否执行深复制。true时,复制整个子节点树(只复制特性。子节点)。false时,只复制本身。

    normalize(): 处理文档树种的文本节点。找到空文本阶段就按删除它。找到相邻的文本节点,将他们合并成为一个文本节点。

    Document类型

    document对象是HTMLDocumen(继承自Document)的一个实例.表示整个HTML页面。document对象是window对象的一个属性。

    文档的子节点

    documentElement: 始终指向HTML页面中的<HTML>元素。

    文档信息:

    document.title: 包含<title>元素中的文本。

    URL: 包含页面完成的URL(地址栏中显示的URL)。

    domain:  包含页面的域名

    referrer: 保存着链接到当前页面的那个页面的URL。

    var url = document.url;
    //取得 完整的URL
    
    var domain = document.domain;
    //取得域名
    
    var referrer = document.refeffer;
    //取得来源页面的URL

    Element类型

    nodetype: 1;

    nodeName: 元素的标签名;

    nodeValue: null。

    parentNode: 可能是document或Element;

    element类型 提供对元素标签名,子节点及特性的访问。

    html元素由HTMLElement类型表示,不是直接通过这个类型,也是通过它的子类型来表示。

    操作特性的DOM方法有三个:

    取得特性:getAttribute(), 特性的名称不区分大小写。

    设置特性:setAttribute(),  接受2个参数: 要设置的特性名,值。如果特性已存在,会已指定的值替换现有的值。即可以操作HTML特性,也可以操作自定义特性。

    移除特性:removeAttribute();

     

    Text类型

    nodetype: 3;

    nodeName: #text;

    nodeValue: 节点所包含的文本。

    parentNode: 是一个Element;

    不支持子节点。

    length属性: 保存字符串的数目。

    文本方法:

    normalize:  合并文本节点,如果在一个包含2个或多个文本节点的父元素上调用,将所有文本节点成一个节点。

    var element = document.createElement("div");
    element.className = "message";
    var textNode = document.createTextNode("Hello World!");
    element.appendChild(textNode);
    
    var anotherNode = document.createTextNode("Yippee!");
    element.appendChild(anotherNode);
    document.body.appendChild(element);
    console.log(element.childNodes.length);
    // 2  
    
    element.normalize();
    console.log(element.childNodes.length);
    // 1

    splitText(): 分割文本节点,将一个文本节点分为俩个,按照指定位置分割。 nodeValue值。原来的文本节点将包含从开始到指定位置之前的内容,新文本节点包含剩下的文本。这个方法会返回一个新文本节点。

    var newNode = element.firstChild.splitText(5);
    console.log(element.firstChild.nodeValue);
     console.log(newNode);
     // Hello
     // " World!Yippee!"

     

  • 相关阅读:
    webpack 打包优化
    webpack 打包
    webpack 删除未使用函数
    Remote Address
    https://my.vmware.com/cn/group/vmware/evalcenter?p=vsphere-eval-7#tab_download
    python 代码检测
    windows 同时安装python2和python3并配置虚拟环境
    electron-log 修改日志保存路径
    png转ico源码
    Electron 开发点滴记录
  • 原文地址:https://www.cnblogs.com/zhangbaihua/p/5598321.html
Copyright © 2020-2023  润新知