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 相关文章推荐
JS的数组的扩展实例代码
Jul 09 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
jQuery 表单验证扩展(三)
Oct 20 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
Nov 01 Javascript
详解AngularJS中的表单验证(推荐)
Nov 17 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
Bootstrap Table快速完美搭建后台管理系统
Sep 20 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
three.js显示中文字体与tween应用详析
Jan 04 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中显示格式化的用户输入
2006/10/09 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python实现双色球随机选号
2020/01/01 Python
python要安装在哪个盘
2020/06/15 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
精伦电子Java笔试题
2013/01/16 面试题
法学专业自我鉴定
2014/02/05 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
2016新年致辞
2015/08/01 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python