JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】


Posted in Javascript onMay 14, 2018

本文实例讲述了JS常见DOM节点操作。分享给大家供大家参考,具体如下:

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(节点文本内容)创建一个文本节点

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

二、插入节点

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

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

三、删除、移除节点

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

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

四、替换节点

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

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

五、查找节点

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

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

2、

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

B、parentNode:获取父节点

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

3、

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

//查找第一个子节点的封装函数
function firstChild(ele) {
  if (ele.firstElementChild) {//如果该条件是true则在该浏览器(IE或非IE)中兼容
    return ele.firstElementChild;
  } else {
    return ele.firstChild;
  }
}
firstChild(oList).style.background = 'red';//将获得的节点的背景变成红色

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

//查找最后一个子节点的封装函数
function lastChild(ele) {
  if (ele.lastElementChild) {//如果该条件是true则在该浏览器(IE或非IE)中兼容
    return ele.lastElementChild;
  } else {
    return ele.lastChild;
  }
}
lastChild(oList).style.background = 'red';//将获得的节点的背景变成红色

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

//查找下一个兄弟节点的封装函数
function nextSibling(ele) {
  if (ele.nextElementSibling) {
    return ele.nextElementSibling;
  } else {
    return ele.nextSibling;
  }
}
nextSibling(oMid).style.background = 'red';

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

//查找上一个兄弟节点的封装函数
function previousSibling(ele) {
  if (ele.nextElementSibling) {
    return ele.previousElementSibling;
  } else {
    return ele.previousSibling;
  }
}
previousSibling(oMid).style.background = 'red';

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery为页面增加快捷键示例
Jan 31 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
PHP 实现一种多文件上传的方法
Sep 20 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
React diff算法的实现示例
Apr 20 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 #Javascript
jQuery中元素选择器(element)简单用法示例
May 14 #jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 #jQuery
vue引入js数字小键盘的实现代码
May 14 #Javascript
vue移动端路由切换实例分析
May 14 #Javascript
对node.js中render和send的用法详解
May 14 #Javascript
利用vscode调试编译后的js代码详解
May 14 #Javascript
You might like
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
javascript基本语法分析说明
2008/06/15 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
整理Python中的赋值运算符
2015/05/13 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
使用python求解二次规划的问题
2020/02/29 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
怎样填写就业意向
2014/04/02 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
会计求职自荐信
2015/03/26 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle