DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准。其赋予了JS操作节点的能力。当网页被加载时,浏览器就会创建页面的文档对象模型。
节点:根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:
1、整个文档时一个文档节点。
2、每个HTML元素是元素节点。
3、HTML元素内的文本是文本节点。
4、每个HTML属性是属性节点。
5、每个注释是注释节点。
所以HTML DOM 将 HTML 文档视作树结构,这种结构被称为节点树。通过 HTML DOM,节点树中的所有节点都可以通过 JS 进行访问。所有 HTML 元素(节点)均可被修改。

一、创建节点、追加节点
1、createElement(标签名)创建一个元素节点(具体的一个元素)。
2、appendChild(节点)追加一个节点。
3、createTextNode(节点文本内容)创建一个文本节点

  1. var oDiv = document.createElement("div");//创建一个div元素,因为是document对象的方法。
  2. var oDivText = document.createTextNode("666");//创建一个文本节点内容是“666”,因为是document对象的方法。
  3. oDiv.appendChild(oDivText);//父级.appendChild(子节点);在div元素中添加“666”
  4. document.body.appendChild(oDiv);//父级.appendChild(子节点);;document.body是指向<body>元素
  5. document.documentElement.appendChild(createNode);//父级.appendChild(子节点);;document.documentElement是指向<html>元素

二、插入节点
1、appendChild(节点)也是一种插入节点的方式,还可以添加已经存在的元素,会将其元素从原来的位置移到新的位置。
2、insertBefore(a,b)是参照节点,意思是a节点会插入b节点的前面。

  1. var oDiv = document.createElement("div");//创建一个div元素,因为是document对象的方法。
  2. var oDiv1 = document.getElementById("div1");
  3. document.body.insertBefore(oDiv,oDiv1);//在oDiv1节点前插入新创建的元素节点
  4. ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

三、删除、移除节点
1、removeChild(节点) 删除一个节点,用于移除删除一个参数(节点)。其返回的被移除的节点,被移除的节点仍在文档中,只是文档中已没有其位置了。

  1. var removeChild = document.body.removeChild(div1);//移除document对象的方法div1

四、替换节点
1、replaceChild(插入的节点,被替换的节点) ,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要被替换的节点。返回的是被替换的节点。

  1. var replaceChild= document.body.replaceChild(div1,div2); //将div1替换div2

五、查找节点
1、childNodes 包含文本节点和元素节点的子节点。

  1. for (var i = 0; i < oList.childNodes.length; i++) {//oList是做的ul的对象。
  2. //nodeType是节点的类型,利用nodeType来判断节点类型,再去控制子节点
  3. //nodeType==1 是元素节点
  4. //nodeType==3 是文本节点
  5. if (oList.childNodes[i].nodeType == 1) {//查找到oList内的元素节点
  6. console.log(oList.childNodes[i]);//在控制器日志中显示找到的元素节点
  7. }
  8. }

2、A、children也可以获取子节点,而且兼容各种浏览器。包括IE6-8
B、parentNode:获取父节点

  1. var oList = document.getElementById('list');//oList是做的ul的对象
  2. var oChild=document.getElementById('child');//oChild是做的ul中的一个li的对象
  3. //通过子节点查找父节点//parentNode:获取父节点
  4. console.log(oChild.parentNode);//在控制器日志中显示父节点
  5. console.log(oList.children);//在控制器日志中显示oList子节点
  6. console.log(children.length)//子节点的个数

3、A、firstChild ; firstElementChild查找第一个子节点。此存在浏览器兼容问题:firstChild是IE兼容,firstElementChild是非IE兼容。

  1. <span style="white-space:pre;">     </span>//查找第一个子节点的封装函数
  2. <span style="white-space:pre;">     </span>function firstChild(ele) {
  3. <span style="white-space:pre;">     </span>if (ele.firstElementChild) {<span style="font-family:Arial, Helvetica, sans-serif;">//如果该条件是true则在该浏览器(IE或非IE)中兼容</span>
  4. <span style="white-space:pre;">     </span> return ele.firstElementChild;
  5. <span style="white-space:pre;">     </span>} else {
  6. <span style="white-space:pre;">     </span> return ele.firstChild;
  7. <span style="white-space:pre;">     </span>}
  8. <span style="white-space:pre;">     </span>}
  9. <span style="white-space:pre;">     </span>firstChild(oList).style.background = 'red';//将获得的节点的背景变成红色

B、lastChild ; lastElementChild查找最后一个子节点。此存在浏览器兼容问题:lastChild 是IE兼容,lastElementChild是非IE兼容。

  1. <span style="white-space:pre;">     </span>//查找最后一个子节点的封装函数
  2. <span style="white-space:pre;">     </span>function lastChild(ele) {
  3. <span style="white-space:pre;">     </span>if (ele.lastElementChild) {<span style="font-family:Arial, Helvetica, sans-serif;">//如果该条件是true则在该浏览器(IE或非IE)中兼容</span>
  4. <span style="white-space:pre;">     </span> return ele.lastElementChild;
  5. <span style="white-space:pre;">     </span>} else {
  6. <span style="white-space:pre;">     </span> return ele.lastChild;
  7. <span style="white-space:pre;">     </span>}
  8. <span style="white-space:pre;">     </span>}
  9. <span style="white-space:pre;">     </span>lastChild(oList).style.background = 'red';//将获得的节点的背景变成红色

C、nextSibling ; nextElementSibling查找下一个兄弟节点。也是存在兼容性问题。

  1. <span style="white-space:pre;">     </span>//查找下一个兄弟节点的封装函数
  2. <span style="white-space:pre;">     </span>function nextSibling(ele) {
  3. <span style="white-space:pre;">     </span>if (ele.nextElementSibling) {
  4. <span style="white-space:pre;">     </span> return ele.nextElementSibling;
  5. <span style="white-space:pre;">     </span>} else {
  6. <span style="white-space:pre;">     </span> return ele.nextSibling;
  7. <span style="white-space:pre;">     </span>}
  8. <span style="white-space:pre;">     </span>}
  9. <span style="white-space:pre;">     </span>nextSibling(oMid).style.background = 'red';

D、previousSibling ; previousElementSibling查找上一个兄弟节点。也是存在兼容性问题。

  1. <span style="white-space:pre;">     </span>//查找上一个兄弟节点的封装函数
  2. <span style="white-space:pre;">     </span>function previousSibling(ele) {
  3. <span style="white-space:pre;">     </span>if (ele.nextElementSibling) {
  4. <span style="white-space:pre;">     </span> return ele.previousElementSibling;
  5. <span style="white-space:pre;">     </span>} else {
  6. <span style="white-space:pre;">     </span> return ele.previousSibling;
  7. <span style="white-space:pre;">     </span>     }
  8. <span style="white-space:pre;">     </span>}
  9. <span style="white-space:pre;">     </span>previousSibling(oMid).style.background = 'red';

js的DOM节点操作:创建 ,插入,删除,复制,查找节点的更多相关文章

  1. jQuery 节点操作(创建 插入 删除 复制 替换 包裹)

    一,创建元素节点: 第1个步骤可以使用jQuery的工厂函数$()来完成,格式如下: $(html); $(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一 ...

  2. 单链表创建、删除、查找、插入之C语言实现

    本文将详细的介绍C语言单链表的创建.删除.查找.插入以及输出功能 一.创建 #include<stdio.h> #include<stdlib.h> typedef int E ...

  3. ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇)

    ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇) 本文主要转载 [  http://www.cnxdug.org/?p=2511 ] 有部分细节自己实验添加,再此谢谢前辈. ...

  4. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

  5. 节点操作-创建并添加&删除节点&替换&克隆节点

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  6. [ActionScript 3.0] AS3 对XML的操作,创建、删除、增加节点方法

    package { import flash.display.Sprite; /** * @author:Frost.Yen * @E-mail:871979853@qq.com * @create: ...

  7. 高效率http页面优化法则一【JS对DOM的操作】

    高效http页面优化法则一很多人都认为JS的效率太慢了,都不愿意用js来实现相对困难一点的程序逻辑.在这里我要说的是其实js的效率并不慢,慢的是DOM,如果操作好DOM,你的js效率将提高接近千倍(这 ...

  8. JS对DOM的操作优化法则

    html页面显示过程 解析HTML,并生成一棵DOM tree 解析各种样式并结合DOM tree生成一棵Render tree 对Render tree的各个节点计算布局信息,比如box的位置与尺寸 ...

  9. JS基础DOM篇之二:DOM级别与节点层次?

    通过上一篇我们大致了解了什么是DOM,今天我们继续深入了解. 1.DOM级别       在大家阅读DOM标准的时候,可能会看到DOM(0/1/2/3)级的字眼,这就是DOM级别.但实际上,DOM0级 ...

  10. C#中对 XML节点进行添加,删除,查找和删除操作

    从网上整理所得 XMLDocument来操作XML比较简单,虽然有时效率不是很高.代码如下 已知有一个XML文件(bookstore.xml)如下: <?xml version="1. ...

随机推荐

  1. 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置[转]

    上篇文章<深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)>简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习 ...

  2. 表单控件绑定v-model

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  3. 《DSP using MATLAB》Problem 8.30

    10月1日,新中国70周岁生日,上午观看了盛大的庆祝仪式,整齐的方阵,先进的武器,尊敬的先辈英雄,欢乐的人们,愿我们的 国家越来越好,人民生活越来越好. 接着做题. 代码: %% ---------- ...

  4. mybatis使用Example进行条件查询

    参考: https://www.cnblogs.com/zhemeban/p/7183061.html Example类是什么? Example类指定如何构建一个动态的where子句. 表中的每个no ...

  5. Spring Security Web应用入门环境搭建

    在使用Spring Security配置Web应用之前,首先要准备一个基于Maven的Spring框架创建的Web应用(Spring MVC不是必须的),本文的内容都是基于这个前提下的. pom.xm ...

  6. Nginx简介与基础配置

    何为Nginx? Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.最初是为了解决C10k的问题,由Igor ...

  7. [转]在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  8. [转]C#设计模式(4)-Simple Factory Pattern

    工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(F ...

  9. 前端在本地启动服务预览html页面

    在开发移动端项目时浏览器里出来的效果往往到真机上和预想的有出入,在开发过程中知道了一个可以在本地自己启动一个服务器在手机预览的办法. 1.首先在终端安装http. npm i http-server ...

  10. Redis开发及管理实战

    目录 Redis数据类型 字符串 String string类型操作 字典 Hash 列表 List 集合 Set 有序集合 SortedSet 生产消费模型 Redis事务管理 事务命令 示例 Re ...