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 相关文章推荐
超级兔子让浮动层消失的前因后果
Mar 09 Javascript
JS 对象介绍
Jan 20 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
Feb 19 Javascript
CSS3,HTML5和jQuery搜索框集锦
Dec 02 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
Mar 10 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 jQuery
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 Javascript
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使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
Python之str操作方法(详解)
2017/06/19 Python
python实现简易版计算器
2020/06/22 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
大学生就业自荐信
2013/10/26 职场文书
高中生的学习总结自我鉴定
2013/10/26 职场文书
致200米运动员广播稿
2014/02/06 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
校运会加油稿大全
2015/07/22 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书