【前面的话】DOM全称是Document Object Model,即文档对象模型。我们常说的html文档其实就是一个DOM树,DOM操作就是在内存中找到DOM树上我们想要的DOM对象,对它的属性进行修改,然后渲染引擎会把修改的结果重新绘制在界面上。DOM里面涵盖的知识点还是很多的,尤其是到后来要兼容浏览器的时候是很绕的,这次先讲一些DOM的相关概念,等聊完BOM之后,我会再针对兼容浏览器这块做个小总结。

1、节点的属性:

① nodeType

//节点
//nodeType 1-元素节点 , 2-属性节点 , 3-文本节点

② nodeName

// nodeName 如果是标签则返回的是标签的名称;如果是文本则返回的是#text;如果是属性节点则返回属性的名称

③ nodeValue

// nodeValue 如果是标签则始终返回null ; 如果是文本节点则返回文本的内容 ;  如果是属性节点则返回属性的值

④节点的复制

    element.cloneNode();    // 克隆一个新的DOM对象;参数为Boolean类型,true赋值子节点,false不复制子节点
element.appendChild(); // 追加元素
2、自定义属性:
    2.1 任何浏览器都可以通过dom对象获取到标签的预定义属性
    2.2 chrome,新版IE(9及以上)无法获取标签的自定义属性;但IE8以前是可以通过dom对象获取到标签的自定义属性
    2.3 如何在任何浏览器中显示自定义属性呢??
            ——getAttribute可以获取标签的预定义属性;通过自定义属性获得的类型都是String
            ——设置属性的值:element.setAttribute(name,value)
            ——移除属性:element.removeAttribute(name)
附:
 element.className = " ";     //仅删除class类的值,保留类名
element.removeAttribute("class") //完全删除这个类
    2.4 属性的相关操作
 // 获取属性节点
var attrNode = box.getAttributeNode("id");
console.log(attrNode.nodeType); //属性节点的nodeType 2
console.log(attrNode.nodeName); //属性节点的nodeName 属性的名称
console.log(attrNode.nodeValue); //属性节点的nodeValue 属性的值 // 设置属性 setAttribute // 移除属性 removeAttribute
3、层次结构
——父节点:parentNode
    ① 子节点:

 childNodes  所有的子节点——DOM标准的方法,除了获取子标签以外,还会获取文本节点;IE8以前会忽略空白节点
children 所有的子元素——非标准的DOM方法,但是几乎所有的浏览器都支持,只会获取元素节点
    ② 兄弟节点,所有浏览器都支持
  element.nextSibling 下一个兄弟节点,可能是非元素节点,会获取到文本节点
element.nextElementSibling 获取下一个紧邻的兄弟元素,会忽略空白 // IE8以前不支持此属性 element.previousSibling 上一个兄弟节点,可能是非元素节点,会获取到文本节点
element.previousSibling 获取上一个紧邻的兄弟元素,会忽略空白 // IE8以前不支持此属性
    ③兄弟元素,IE8以前不支持

  previousElementSibling 上一个兄弟节点
nextElementSibling 下一个兄弟节点
 

DOM的相关概念的更多相关文章

  1. DOM API详解

    来源于:http://zxc0328.github.io/2016/01/23/learning-dom-part1/ https://zxc0328.github.io/2016/01/26/lea ...

  2. javascript_19-DOM初体验

    DOM DOM: 文档对象模型(Document Object Model),又称为文档树模型.是一套操作HTML和XML文档的API. DOM可以把HTML和XML描述为一个文档树.树上的每一个分支 ...

  3. 理清javascript的相关概念 DOM和BOM

    javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异.JavaScript=语法+BOM(含DOM) ...

  4. JS — 事件的相关概念和DOM

    JS是以事件驱动为核心的一门语言. 事件的三要素:事件源.事件.事件驱动程序. 例如: <body> <div id="box1"></div> ...

  5. 从JS和jQuery浅谈DOM操作,当我们在获取时,究竟获取了什么

    0.写在前面的话 自己对前端的东西一直不是很熟,现在开始要想办法从前端各个地方去获取想要的属性值的时候,也基本是在网上现炒现卖,几周下来,发现自己还是迷迷糊糊,可以算是一无所获. 所以就抽时间,把这一 ...

  6. 从零开始学 Web 之 DOM(一)DOM的概念,对标签操作

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  7. 遍历DOM树

    遍历DOM在jQuery中是非常重要的技术. 遍历DOM之前,需要对DOM有清晰的认识,了解文档节点.元素节点.属性节点.文本节点等相关概念.不清楚可以温习下<JavaScript教程.DOM树 ...

  8. DOM事件机制(事件捕获和事件冒泡和事件委托)

    内容: 1.事件复习 2.事件冒泡与事件捕获 3.事件委托 1.事件复习 (1)事件 事件是用来处理响应的一个机制,这个响应可以来自于用户(点击, 鼠标移动, 滚动), 也可以来自于浏览器 下面的链接 ...

  9. Web 开发相关概念

    Web 开发相关概念 前端 后端 全栈 前端 Front-end:网站中用户看到的部分 HTML CSS JavaScript 库和框架 设计工具 后端 Back-end:网站中用户看不到的部分 编程 ...

随机推荐

  1. VS打包方法(安装和部署简介)——内含大量图片,密症慎入!

    友情提示:内含大量文字.图片,密集恐惧症者慎入! 主要记述一下利用微软集成开发环境VS打包的方法和详细步骤. 1.新建打包工程 打开VS,文件->添加项目->新建项目(如图1),在添加新项 ...

  2. PHP读取文件的常见方法

    整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...

  3. js 数组方法大集合,各方法是否改变原有的数组详解

    不会改变原来数组的有: concat()---连接两个或更多的数组,并返回结果. every()---检测数组元素的每个元素是否都符合条件. some()---检测数组元素中是否有元素符合指定条件. ...

  4. java基础编程——树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目代码 /** * 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一 ...

  5. 在DOS界面下快速进入目录的技巧

    在DOS界面如果想进入某一目录还是比较困难的,尤其是有长目录名和中文目录名的时候. 比如:要进入“D:/工具箱/杀毒软件”这个目录. 1.在Windows下进入这个目录. 2.在地址栏输入 C:/WI ...

  6. arcgis engine计算点到线的最短距离

    IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点.IProximityOperator接口的主要方法有:QueryNea ...

  7. mysql 获取系统时间的下一天 年-月-日 时:分:秒

    DAY) as date

  8. 快速搭建FTP服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  9. 绘制三角形:imageline()

    <?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...

  10. JZOJ 4725. 质数序列

    Description 由于去NOI的火车“堵”了数不清时间,小Z和小D打完ETG,闲着无聊开始看今年的JSOI省选题,并尝试着修改题目:对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ...