zoukankan      html  css  js  c++  java
  • tagName和nodeName的区别

    首先介绍DOM里常见的三种节点类型(总共有12种,如docment):元素节点,属性节点以及文本节点,例如<h2 class="title">head</h2>,其中h2是元素节点,class是属性节点,head是文本节点,在这里你可以说h2这个元素节点包含一个属性节点和一个文本节点。其实几乎所有HTML的标签都是元素节点,而id, title, class等则是属性节点,而元素所包含的文本内容则是文本节点。

    tagName和nodeName的语义是一样的,都是返回所包含标签的名称,例如上面的h2标签,都是返回h2,但是tagName只能在元素标签上使用,而nodeName则可以在所有的节点上使用。下面是nodeName在不同节点上的值:

    InterfacenodeNamenodeValueattributes
    Attr name of attribute value of attribute null
    CDATASection #cdata-section content of the CDATA Section null
    Comment #comment content of the comment null
    Document #document null null
    DocumentFragment #document-fragment null null
    DocumentType document type name null null
    Element tag name null NamedNodeMap
    Entity entity name null null
    EntityReference name of entity referenced null null
    Notation notation name null null
    ProcessingInstruction target entire content excluding the target null
    Text #text content of the text node null

    而tagName只有在元素节点上才会有值。

    从DOM层次来看,nodeName是node 接口上的property,而tagName是element 接口上的property,所有的节点(元素节点,属性节点,文本节点等12种)都继承了node接口,而只有元素节点才继承了element节点,因此nodeName比tagName具有更大的使用范围。

    总结:tagName只能用在元素节点上,而nodeName可以用在任何节点上,可以说nodeName涵盖了tagName,并且具有更多的功能,因此建议总是使用nodeName。

  • 相关阅读:
    swift延时执行
    Swift3.0 — CocoaAsyncSocket客户端(Socket通信)
    SnapKit配置过程
    iOS App图标和启动画面尺寸
    mac升级到10.13 CocoaPods不能使用
    上传app到app store遇到 An error occurred uploading to the iTunes Store.(iTunes Store Operation Failed)的解决方法
    swift高斯模糊的自定义view
    Swift 实现部分圆角
    android 代码设置、打开wifi热点及热点的连接
    自定义android Dialog
  • 原文地址:https://www.cnblogs.com/icaihua/p/5002793.html
Copyright © 2011-2022 走看看