js—— DOM中的node类型(二)

DOM中的node类型

DOM1中定义了一个Node接口,这个接口在js中作为Node类型实现,除IE外,其他浏览器都可以访问到这个类型。Js中所以节点类型都继承自Node类型,节点类型都享有共同的·基本属性和方法。

每个节点都有nodeType属性,表明节点类型,由12个常量表示,任何节点必居其一。

Node.ELEMENT_NODE   1   元素节点
Node.ATTRIBUTE_NODE   2  属性节点
Node.TEXT_NODE   3  文本节点
......

常用的为以上三种,还有其他类型可去查阅相关资料

确定节点类型的方法:

//IE中无效
if(someNode.nodeType==Node.ELEMENT_NODE){
    alert("element");
}

//或(由于IE没有公开Node类型的构造函数,上面的方法会导致错误,所以为了保证兼容性,还是用数值比较的方法)
if(someNode.nodeType==1){
    alert("element");
}
  • nodeName和nodeValue属性

    //先检测节点类型
    if(someNode,nodeType==1){
        value=someNode.nodeNmae;
    }

    对于元素节点

    • nodeName:它的值是元素的标签名
    • nodeValue: 它的值始终是null
  • 节点关系

    节点间的关系一般采用家族关系来描述。比如HTML中有父元素,子元素关系。

    1.每个节点都有childNodes属性,保存着NodeList对象,一种保存着有序节点的类数组对象

    • //访问NodeList对象方法
      var firstChild=someNode.childNodes[0];
      var secondChild=someNode.childNodes.item(1);
      var count=someNode.childNodes.lenth;
    • NodeList是DOM结构动态执行查询的结果。
    • 将NodeList转为数组
      //IE中无效
      var arrayOfNode=Array.prototype.slice.call(someNode.childNodes,0);
      
      //所有浏览器都可运行
      function convertToArray(nodes){
          var array=null;
          try{
              arrayOfNode=Array.prototype.slice.call(nodes,0);
          }catch(err){//报错就手动添加
              array=new Array();
              for(var i=0,len=nodes.length;i<len;i++){
                  array.push(node[i]);
              }
          }
      }

    2.每个节点还有:

    • parentNode属性:指向父节点。父节点的firstChild和lastChild指向第一个和最后一个子节点;只有一个子节点时这两属性指向同一个节点,没有子节点时,两个属性为null
    • nextSibling属性:同一列表中下一个节点,最后一个节点的nextSibling为null
    • previousSibling属性:同一列表中上一个节点,第一个一个节点的previousSibling为null

3.所有节点的ownerDocument属性:指向表示整个文档的文档节点

  • 操作节点

    1. appendChild() : 向节点的childNodes列表末尾添加一个节点
    • 添加新节点:

      someNode.appendChild(newNode);
    • 移动节点到最后一位
      someNode.appendChild(someNode.firstChild);//将第一个子节点移动到最后一位
    1. insertBefore() : 插入节点,接收两个参数:第一个是要插入的节点,第二个是位置参照节点。被插入的节点会作为参照节点的前一个同胞节点被返回。

      //插入后成为最后一个节点
      someNode.insertBefore(newNode,null);
      
      //插入成为第一个节点
      someNode.insertBefore(newNode,someNode.firstChild);
    2. replaceChild(): 替换节点。接收两个参数:要传入的节点和要替换的节点。
    3. removeChild():移除节点。接收一个参数:要移除的节点。
  • 其他方法
    1. cloneNode(): 创建调用这个方法的节点的一个完全相同的副本。接收一个布尔值参数:是否执行深复制,深复制会复制整个子节点数(true),浅复制只复制本身。
    2. normalize(): 处理文档树中的文本节点。有时候会出现文本节点不包含文本或者接连出现两个文本节点的情况。在某个节点上调用这个节点,可查找上述的两种情况,如果找到了空节点就删除它,如果找到接连的两个节点就合并。

上一节---->[js——DOM层次节点(一)]

原文地址:https://www.cnblogs.com/ellen-mylife/p/11377531.html

时间: 2024-10-28 03:21:28

js—— DOM中的node类型(二)的相关文章

从原型链看DOM--Node类型

前言: 本系列从原型,原型链,属性类型等方面下手学习了DOM文档对象模型,旨在弄清我们在DOM中常用的每一个属性和方法都清楚它从哪里来要到哪里做什么事,这样对于理解代码有一定启发.全靠自己在总结中摸索,所以对于一个问题要是深究还真能挖出许多有意思的东西,现在觉得JavaScript这个东西简直越来越有意思了. 正文:DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次化的节点树,允许开发人员添加,移除,修改页面某一部分,现在它已成为表现和操作页面

JS DOM中Ajax的使用

一.概念 全称:Asynchronors Javascript XML  异步JS数据交换格式. [Asynchronous]:异步的,即在执? AJAX 请求时不会阻塞后?代码的运?.[JavaScript]:使? JavaScript 实现浏览器与服务器之间的数据交互.[XML]:?种数据结构,AJAX 创建之初在与服务器进?数据交换时,使?的数据结构就是 XML.但是现在已经慢慢被 JSON 数据结构所取代. 二.步骤 1. 创建 XMLHttpRequest 对象. //1.:创建 XM

JS中nodeType的十二种类型

DOM1定义了一个Node接口,该接口将有DOM中所有节点类型实现.除IE外其他浏览器中都可以访问这个类型 1 ELEMENT_NODE  元素节点2 ATTRIBUTE_NODE  属性节点3 TEXT_NODE  文本节点4 CDATA_SECTION_NODE  CDATA区段5 ENTITY_REFERENCE_NODE 实体引用元素6 ENTITY_NODE  实体7 PROCESSING_INSTRUCTION_NODE  表示处理指令8 COMMENT_NODE  注释节点9 DO

JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结

JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode    父节点 childNodes    子节点 firstChild    父节点里的第一个子节点 lastChild     父节点里的最后一个子节点 nextSibling    与子节点并列的下一个兄弟节点 previousSibling   与子节点并列的上一个兄弟节点 火狐与谷歌支持而ie8不支持的节点关系有: previous

黑马程序员----OC中含有BOOL类型

一.BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二.BOOL类型的本质 typedef signed char BOOL; 三.BOOL类型的取值范围 BOOL类型的变量又2种取值:YES .NO #define YES (BOOL)1 #define NO (BOOL)0 四.代码练习: 运行结果:

JS Dom节点操作demo!

通过黑马课程的学习,在这里分享一个js Dom中节点操作的小练习 需求:使用js创建一个4*3的表格table. onload = function(){ function c(tagName){ return document.createElement(tagName); } var table = c('table'); var tbody = c('tbody'); table.appendChild(tbody); for(var i = 0;i<4;i++){ var tr = c(

JS——DOM操作(childNodes、nodeType和children区别与用法)

DOM中节点的类型 DOM中一共有12中类型.但是我们常用的只有几种. 首先我们了解下DOM中一般常见的节点类型有哪些? 1.元素节点 DOM中的原子都是元素节点,比如<body><table><div>等等. 如果把Web上的文档比作一座大厦,则元素就是构成这块大厦的砖石.一个文档是由N个元素组成的.元素可包含其他元素. 2.文本节点 任意的文字.空格.换行.空白行都算是文本节点. 3.属性节点 属性节点,故名思议就是其他节点的属性.例如所有的元素都有title属性,

js DOM Node类型

DOM(文档对象模型)是针对HTML和XML文档的一个API. DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的.以特定节点为根节点的树形结构.节点分为12种不同的类型,每种类型分别表示文档中的不同信息及(或)标记.这些类型都继承自一个基类型. 以下面为例: <html> <!--文档元素,文档节点的子节点,是文档的最外层元素.每个文档只有一个文档元素.--> <head> <title>My article</title> <

Cookie和Session在Node.JS中的实践(二)

Cookie和Session在Node.JS中的实践(二) cookie篇在作者的上一篇文章Cookie和Session在Node.JS中的实践(一)已经是写得算是比较详细了,有兴趣可以翻看,这篇是session篇,重点在讨论seesion的特性.概念,以及session和cookie的区别和联系. 之前有人问我,这个问题有必要长篇大论的探讨吗?其实只要我觉得这个技术点重要而且具有迷惑性,就值得去写.去探讨,否则你很难完全明白.写这种文章有两个好处: 首先,于作者而言,写出来文章让大家一起理解某