美文网首页
【JS】20--Core DOM

【JS】20--Core DOM

作者: Daeeman | 来源:发表于2020-04-02 21:44 被阅读0次

    1. 节点关系

    三种类型的节点

    • 元素类型
    • 文本类型
    • 属性类型

    操作html的三种方式

    • html方式
    • DOM核心方式
    • XML方式

    a. 创增删改

    方法 解释
    createElement("") 创建元素节点
    插入节点
    parent.appendChild(child) 后面内部插入
    parent.insertBefore(new,node) new 新插入的节点
    node 在node节点前
    el.html(str) 获取设置html内容
    el.text() 获取设置文本内容
    el.value 获取设置表单值
    el.cloneNode(true) 复制节点
    parent.remove(child) 父亲删除子节点

    b. 节点

    1. 节点类型
      nodeType 1-9
      元素节点 1
      文本节点 3
    2. nodeValue
      节点的值 (文本值)
    3. nodeName
      节点的名称 ( 标签名)

    c. Element类(元素节点类)

    --- ---
    parentElement 父元素节点
    children 子节点
    firstElementChild 第一个子节点
    lastElementChild 最后一个子节点
    previousElementSibling 上一个兄弟元素
    nextElementSibling 下一个兄弟元素

    d. node类 (节点类)

    --- ---
    parentNode 父节点
    childNodes 子节点
    firstChild 第一个子节点
    lastChild 最后一个子节点
    previousSibling 上一个兄弟元素
    nextSibling 下一个兄弟元素

    区别 :
    node类型包含了文本节点和元素节点
    兼容性 node类型更好,操作方便 Element更方便

    e. 表格操作

    --- ---
    table.insertRow(n) n插入到第几行
    row.insertCell(n) n插入到第几列
    row.rowIndex 返回当前是第几行
    table.deleteRow(n) 删除第n行

    f. 距离相关

    宽高
    window.innerWidth 可视区宽
    window.innerHeight 可以区域高
    document.documentElement.offsetHeight 文档高
    document.documentElement.offsetWidth 文档宽
    el.clientWidth
    el.clentHeight
    内容+padding(内边距) 的宽高
    el.offsetHeight
    el.offsetWidth
    内容+padding(内边距)+border(边框)的宽高
    el.scrollHeight
    el.scrollWidth
    内容+padding(内边距)+滚动区域的宽高
    偏移值
    getBoundingClientRect
    x
    y
    width 宽
    height 高
    top 距离可视区域的top
    bottom 距离可视区域的底部偏移值
    right 距离可视区域的右侧偏移值
    offsetTop 可以获得 HTML 元素距离上方或外层元素的位置
    offsetLeft
    clientTop 获取元素上边框的高度

    滚动值
    scrollTop滚动顶部的值
    scrollLeft滚动左侧的值

    HTMLCollection 对象

    getElementsByTagName() 方法返回 HTMLCollection 对象。

    HTMLCollection 对象是类数组的 HTML 元素列表(集合)。

    下面的代码选取文档中的所有 <p> 元素:

    <h1>JavaScript HTML DOM</h1>
    <p>Hello World!</p>
    <p>Hello China!</p>
    <p id="demo"></p>
    
    <script>
    var myCollection = document.getElementsByTagName("p");
    document.getElementById("demo").innerHTML =
    "第二段的 innerHTML 是:" + myCollection[1].innerHTML;
    </script>
    

    HTML HTMLCollection 长度
    length 属性定义了 HTMLCollection 中元素的数量:

    实例

    var myCollection = document.getElementsByTagName("p");
    document.getElementById("demo").innerHTML = myCollection.length; 
    

    HTMLCollection 并非数组!
    HTMLCollection 也许看起来像数组,但并非数组。

    您能够遍历列表并通过数字引用元素(就像数组那样)。

    不过,您无法对 HTMLCollection 使用数组方法,比如 valueOf()、pop()、push() 或 join()。

    HTML DOM NodeList 对象

    NodeList 对象是从文档中提取的节点列表(集合)。

    NodeList 对象与 HTMLCollection 对象几乎相同。

    如使用 getElementsByClassName() 方法,某些(老的)浏览器会返回 NodeList 对象而不是 HTMLCollection。

    所有浏览器都会为 childNodes 属性返回 NodeList 对象。

    大多数浏览器会为 querySelectorAll() 方法返回 NodeList 对象。

    下面的代码选取文档中的所有 <p> 节点:

    实例

    var myNodeList = document.querySelectorAll("p");

    亲自试一试

    NodeList 中的元素可通过索引号进行访问。

    如需访问第二个 <p> 节点,您可以这样写:

    y = myNodeList[1];
    注释:索引从 0 开始。

    HTML DOM Node List 长度

    length 属性定义节点列表中的节点数:

    实例

    var myNodelist = document.querySelectorAll("p");
    document.getElementById("demo").innerHTML = myNodelist.length;
    

    例子解释:

    • 创建所有 <p> 元素的列表
    • 显示该列表的长度

    length 属性在您希望遍历节点列表中的节点时很有用:

    实例

    改变节点列表中所有 <p> 元素的背景色:

    var myNodelist = document.querySelectorAll("p");
    var i;
    for (i = 0; i < myNodelist.length; i++) {
        myNodelist[i].style.backgroundColor = "red";
    }
    

    HTMLCollection 与 NodeList 的区别

    HTMLCollection(前一章)是 HTML 元素的集合。

    NodeList 是文档节点的集合。

    NodeList 和 HTML 集合几乎完全相同。

    HTMLCollection 和 NodeList 对象都是类数组的对象列表(集合)。

    它们都有定义列表(集合)中项目数的 length 属性。

    它们都可以通过索引 (0, 1, 2, 3, 4, ...) 像数组那样访问每个项目。

    访问 HTMLCollection 项目,可以通过它们的名称、id 或索引号。

    访问 NodeList 项目,只能通过它们的索引号。

    只有 NodeList 对象能包含属性节点和文本节点。

    节点列表不是数组!

    节点数组看起来像数组,但并不是。

    您能够遍历节点列表并像数组那样引用其节点。

    不过,您无法对节点列表使用数组方法,比如 valueOf()、push()、pop() 或 join()。

    相关文章

      网友评论

          本文标题:【JS】20--Core DOM

          本文链接:https://www.haomeiwen.com/subject/jqmfphtx.html