原生JavaScript常用的DOM操作

  之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或者库好多都是公司内部自己构建的,所以说到头来还是要原生JavaScript,这里总结了一些原生js常用的dom操作函数。

  

一:节点关系

 //元素的子元素都可以通过someNode下的childNodes对象来访问
 var firstChild = someNode.firstChild;          //获得第一个子元素
 var lastChild = someNode.lastChild;            //获得最后一个子元素
 var secondChild = someNode.childNodes[1];      //获得第二个子元素
 var secondChild = someNode.childNodes.item(1)  //获得第二个子元素
 var count = someNode.childNodes.length;        //获得子元素个数
 var parentNode = someNode.parentNode;          //获得父元素

 var prevNode = someNode.previousSibling;       //获得前一个同胞元素,如果没有则为null
 var nextNode = someNode.nextSibling;           //获得后一个同胞元素,如果没有则为null

 var isHave = someNode.hasChildNodes();         //节点包含一个或多个子节点返回true

 var owner = someNode.ownerDocument;            //指向表示整个文档的文档节点

二:操作节点

appendChild(newNode): 在节点子元素列表最后插入一个新节点,返回新增节点,如果节点本来就是文档的一部分,那就是将节点从原来的位置移到新位置。
var returnedNode = someNode.appendChild(newNode);  
insertBefore(newNode, 参照节点): 在指定节点之前插入一个新的节点。
 var returnedNode = someNode.insertBefore(newNode, null)  //参照物为null,则插入子节点列表最后 var returnedNode = someNode.insertBefore(newNode, someNode.fisrtChild) //以第一个子节点为参照物,相当于新节点变成了第一个子节点

replaceChild(newNode,参照节点): 用新的节点替换旧节点,返回被替换的节点,被替换的节点依然属于文档,只是没有了位置。

  var returnedChild = someNode.replaceChild(newNode, someNode.firstChild) //新节点替换第一个子元素

 removeChild(): 移除一个子节点,并且作为返回值返回,被移除的节点依然属于文档,只是没有了位置。

var formerFirstChild= someNode.removeChild(someNode.firstChild); //移除第一个子节点

 cloneNode(布尔值):复制一个节点,当参数为false时只复制节点本身,当参数为true是复制节点和他的所有子节点树。该函数不会复制事件处理程序,但是ie存在一个bug会复制处理程序,所以复制前最好先移除事件处理程序。

有这样的html代码:

<ul>
     <li>item 1</li>
     <li>item 2</li>
     <li>item 3</li>
 </ul>
  假设我们已经将<ul>元素的引用保存在了myList中。
  var deepList = myList.cloneNode(true);
  alert(deepList.childNodes.length); //3(IE < 9) 或 7(其他浏览器)

  var deepList = myList.cloneNode(false);
  alert(deepList.childNodes.length);  //0
时间: 2024-08-11 01:36:01

原生JavaScript常用的DOM操作的相关文章

javascript 常用的数组操作

join() Array.join(/* optional */ separator) 将数组转换为字符串,可带一个参数 separator (分隔符,默认为","). 与之相反的一个方法是:String.splict() ,将字符串分隔成若干块来创建一个新的数组. reverse() Array.reverse(),颠倒数组元素的顺序,返回逆向的数组.注意此方法会修改原来数组元素的位置,而不是返回一个新的数组. sort() sort() 方法将数组中的元素排序并返回排序后的数组.s

javascript中的DOM操作及应用

javascript在dom中的应用是一个核心问题,它体现出了JavaScript的意义所在,它是我们操作页面变得动态化,操作页面变得更容易,但同时,大量的使用DOM操作,也会是浏览器的执行效率大打折扣,正确高效的使用DOM操作,是我们在实际工作中经常遇到的,那么我们就来看一下DOM操作: 当我们要对DOM元素进行各种操作的时候,我们首先要坐的就是先去获取这个元素: 1 <div id="example" class="divDom" >DOM操作 &l

mui项目中如何使用原生JavaScript代替jquery来操作dom

转载于:http://www.bcty365.com/content-146-3661-1.html 最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的.原生JS挺简单,为何需要jq?jq的成功当时是因为ie6.7.8.9.10.chrome.ff这些浏览器不兼容,让开发者崩溃,而且pc上浏览器性能好,跨平台兼容也不影响性能.但jq根本就不是为手机设计的.手机上只有webkit浏览器(忽略wp,反正mui不支持wp),根本就不需要jq这种封装框架来操作dom

MUI常用脚本及原生JavaScript常用操作元素方法

1.mui元素转换html元素 var obj=mui("#id")[0]; 2.事件绑定 var btn = document.getElementById("login"); btn.addEventListener('tap',function(){ //事件处理 }); /*给address内的所有含有ajaxbtn类名的元素单击事件 */ mui('.address').on('tap','.ajaxbtn',function(){    dpajax(t

网页制作之JavaScript部分 2 - DOM操作

1.DOM的基本概念  htmlDOM是一种面向对象的树的模型,它包含html中的所有元素:通过html可以找到所有包含在dom中的元素. DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Windows对象操作 一.属性和方法: 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null. dialogArgument:对话框返回值. 子对象:history,locatio

仅用原生JavaScript手写DOM事件模型

前言 前段时间博客园里有篇很火的帖子2016十家公司前端面试小记,主要讲作者的前端求职面试经历,其中提到了面试官会考察手写一个简单的事件模型: "如果上述都ok的话,那么极有可能要求让你[实现事件模型],即写一个类或是一个模块,有两个函数,一个bind一个trigger,分别实现绑定事件和触发事件,核心需求就是可以对某一个事件名称绑定多个事件响应函数,然后触发这个事件名称时,依次按绑定顺序触发相应的响应函数." 如果了解观察者模式,那么事件模型应该不算太难.本着深入钻研的精神,我试着来

JavaScript基础:DOM操作详解

本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元素的API.比如让盒子移动.变色.轮播图等. BOM:浏览器对象模型,操作浏览器部分功能的API.比如让浏览器自动滚动. 事件 JS是以事件驱动为核心

JavaScript里面之dom操作

1.dom之选择元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>你好</title> </head> <body> <div> <div class="c1"></div> <div class="c1&

JavaScript基础-----(DOM操作的内容)

查询元素 1.直接访问指定节点的方法 getElementById():返回一个节点对象 id getElementByName():返回多个(节点数组) 名字 getElementByTagName():返回多个(节点数组) 标签名 2.间接根据层次关系查找节点 父节点 parentNode 孩子节点 childNodes 数组对象,表示该节点的多有子节点的集合 firstChild   lastChild 兄弟节点 nextSibling  previousSiBling 操作文本 1.对于