zoukankan      html  css  js  c++  java
  • js中的节点操作

    一、节点概念:
    整个HTML文件,其中所有的内容,都视为HTML文件的一个节点对象,可以通过操作节点对象,来操作HTML文件。
    1、起始节点操作,就是另一种DOM操作,也是获取对象、操作对象,但节点操作比DOM操作更加复杂、更加丰富
    2、与DOM的操作区别:DOM操作只能获取标签对象,节点操作能获取标签对象、内容对象、属性对象、注释内容。
    3、特点:
      A、在复制标签时会用克隆方法,而在写入标签时会使用节点操作
      B、不管是DOM方式,还是节点方式 获取的标签对象,内容可能不同,形式是完全一致的
      C、DOM方式 获取的标签对象,支持节点操作;节点方式 获取的节点对象,支持DOM操作
      D、只要正确的获取对象,之后想怎么操作,怎么操作
    二、操作方法:

    var oDiv = document.querySelector('div');

    1、获取子级标签节点,执行结果是一个伪数组可以forEach循环

    console.log(oDiv.childNodes);

    2、获取标签的元素节点/标签节点,结果是一个伪数组,但不能被forEach()循环

    console.log(oDiv.children);

    3、获取当前标签中第一个节点,执行结果是一个对象,内容形式与DOM操作方式,获取的内容是一样的

    console.log(oDiv.firstChild);

    4、获取标签最后一个节点,执行结果也是一个对象,内容形式与DOM操作方式,获取的内容是一样的

    console.log(oDiv.lastChild);

    5、获取当前标签中,第一个标签节点,其他节点不会获取

    console.log(oDiv.firstElementChild);

    6、获取当前标签中,最后一个节点,其他节点不会获取

    console.log(oDiv.lastElementChild);

    7、获取当前标签,上一个兄弟节点(找哥哥)

    console.log(oDiv.previousSibling);

    8、获取当前标签,下一个兄弟标签(找弟弟)

    console.log(oDiv.nextSibling);

    9、获取当前标签上一个兄弟元素节点(找标签哥哥)

    console.log(oDiv.previousElementSibling);

    10、获取当前标签下一个兄弟元素节点,找标签弟弟

    console.log(oDiv.nextElementSibling);

    11、获取当前标签,父级节点(直接获取父级)

    console.log(oDiv.parentNode);
    console.log(document.querySelector('span').parentNode)

    12、获取当前标签所有属性的节点,执行结果是一个伪数组,不能被forEach循环

    console.log( oDiv.attributes );

    总结:
      A:通过节点操作获取对象/伪数组与通过DOM操作的对象/伪数组,形式上是一致的,可以互相操作
      B、执行结果上,有的伪数组可以forEach循环,有的不能forEach循环

    三、节点操作的类型,名称,内容
    1、节点的类型: 对象.nodeType 属性中存储,数据是 一个数值
      元素节点/标签节点 : 1
      属性节点 : 2
      文本节点 : 3
      注释节点 : 8

    2、节点的名称: 对象.nodeName
      元素节点/标签节点 : 大写字母的 标签名称
      属性节点 : 小写字母的 属性名称
      文本节点 : #text
      注释节点 : #comment

    3、节点的内容: 对象.nodeValue
      元素节点/标签节点 : null
      属性节点 : 属性的属性值
      文本节点 : 文本内容,包括换行和空格
    注释节点 : 注释内容,包括换行和空格

    四、节点的获取、新增、删除、克隆、写入
    1、新建标签及文本

    document.createElement('标签名称');
    var oDiv = document.createElement('div');
    console.dir(oDiv);
    document.createTexNode('要创建的文本内容')
    var oText = document.createTexNode('要创建新增的内容')
    console.log(oText);

    2、删除节点
    标签对象.removeCgild('需要删除的节点')

    3、克隆节点
    标签对象.clone() 只克隆标签本身
    标签对象.clone(true) 克隆标签本身和标签内容
    4、写入节点
    A、在当前标签末位,添加节点
      标签对象.appendChide
    B、在当前标签,某个子级标签之前,添加节点
      标签对象.insertBefore('要写入的标签' , 要写在哪个子级节点之前)

    var d = document.querySelector('div');
    d.appendChide(oText);
    d.insertBefore(oDiv,d.firstChild);
    d.appendChide(oDiv);
    A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)
  • 相关阅读:
    Android支付接入(7):Google In-app-Billing
    SDK接入(2)之Android Google Play内支付(in-app Billing)接入
    Google In-App Billing 实现(内含Unity 实现经验)
    unity3d如何快速接入渠道SDK之Unity篇
    [Unity3D]Unity+Android交互教程——让手机"动"起来
    mysql avg()函数,获取字段的平均值
    mysql tan() 函数
    mysql pi() 获取pi
    mysql mod() 获取余数
    mysql sqrt() 函数
  • 原文地址:https://www.cnblogs.com/karl-kidd/p/12670678.html
Copyright © 2011-2022 走看看