js node节点深入理解

第一部分:什么是node节点

node是个接口,有许多DOM类型从这个接口继承,并允许类似的处理(或检测)这些各种类型。在方法和属性不相关的特定情况下,这些接口可能会返回null。
比如说,DOM中的Element,Text和Comment都继承于它。换句话说,Element,Text和Comment是三种特殊的Node,它们分别叫做ELEMENT_NODE,TEXT_NODE和COMMENT_NODE。
在这里插入图片描述Node(节点)是DOM层次结构中的任何类型的对象的通用名称,Node有很多类型,如元素节点,属性节点,文本节点,注释节点等,通过NodeType区分,常见的有:

节点类型NodeType
元素element1
属性attr2
文本text3
注释comments8
文档document9

节点的属性

  • 节点值页面中的所有内容,包括标签、属性、文本
  • nodeType,节点类型:如果是标签,则是1;如果是属性。则是2;如果是文本,则是3
  • nodeName,节点名字:如果是标签,则是大写的标签,如果是属性,则是小写的属性;如果是文本,则是#text
  • nodeValue,节点的值:如果是标签,则是null;如果是属性,则是属性值;如果是文本,则是文本内容
例如:

实际上Node表示的是DOM树的结构,在html中,节点与节点之间是可以插入文本的,这个插入的空隙就是TEXT_NODE,即:

<body>
    we can put text here 1...
    <h1>China</h1>
    we can put text here 2...
    <!-- My comment ...  -->
    we can put text here 3...
    <p>China is a popular country with...</p>
    we can put text here 4...
    <div>
      <button>See details</button>
    </div>
    we can put text here 5 ...
</body>

所以:body的直系元素(3)+ COMMENT_NODE(1) + TEXT_NODE(5) = 9

第二部分:常用操作

  1. 获取元素节点
    getElementById():获取指定唯一id的元素。
    getElementByTagName():获取指定元素标签名的元素数组。
    getElementByName():获取具有指定属性name的元素数组。
  2. 子节点
    element.childNodes:返回该元素的子节点数组。注意:换行在浏览器中作为text节点,需要进行过滤
    element.firstChild:该元素的第一个子节点。
    element.lastChild:该元素最后一个子节点。
  3. 父节点
    element.parentNode
  4. 兄弟节点
    element.previousSibling:返回相同的树层级中的前一个节点,如果没有,则为null
    element.nextSibling:返回相同的树层级中的后一个节点,如果没有,则为null
  5. 创建节点
    createElement() 按指定标签名创建节点
  6. 复制节点
    clonedNode = Node.cloneNode(boolean) 传入布尔值,true表示复制该节点下的所有子节点
  7. 加入节点
    parentNode.appendChild(childNode) 将新节点加入到子节点末尾
    parentNode.insertBefore(newNode, targetNode) 将newNode 加入到targNode之前
  8. 移除目标节点
    parentNode.removeChild(childNode)
  9. 替换目标节点
    parentNode.replace(newNode, targetNode) 使用newNode 替换targetNode
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值