原生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); //
原生JavaScript常用的DOM操作的更多相关文章
- 原生JavaScript常用本地浏览器存储方法一(方法类型)
有时需要将网页中的一些数据保存在浏览器端.好处就是当下次访问页面时,直接就可以从本地读取数据,不需要再次向服务器请求数据.目前常用的有以下几种方法: 1.cookie cookie会随着每次HTTP请 ...
- [笔记]原生JS实现的DOM操作笔记
原生JS实现的DOM一系列操作参考: 原生JavaScript封装DOM库 siblings: 原生JS-查找相邻的元素-siblings方法的实现 addClass,removeClass,hasC ...
- javascript教程2:---DOM操作
1.DOM 简介 当页面加载时,浏览器会创建页面的文档对象模型(Document Object Model).文档对象模型定义访问和处理 HTML 文档的标准方法.DOM 将 HTML 文档呈现为带有 ...
- mui项目中如何使用原生JavaScript代替jquery来操作dom 转自【B5教程网】:http://www.bcty365.com/content-146-3661-1.html
最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的.原生JS挺简单,为何需要jq?jq的成功当时是因为ie6.7.8.9.10.chrome.ff这些浏览器不兼容 ...
- mui项目中如何使用原生JavaScript代替jquery来操作dom
最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的.原生JS挺简单,为何需要jq?jq的成功当时是因为ie6.7.8.9.10.chrome.ff这些浏览器不兼容 ...
- MUI常用脚本及原生JavaScript常用操作元素方法
1.mui元素转换html元素 var obj=mui("#id")[0]; 2.事件绑定 var btn = document.getElementById("logi ...
- 原生JavaScript对【DOM元素】的操作——增、删、改、查
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 网页制作之JavaScript部分 2 - DOM操作
1.DOM的基本概念 htmlDOM是一种面向对象的树的模型,它包含html中的所有元素:通过html可以找到所有包含在dom中的元素. DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对 ...
- JavaScript基础:DOM操作详解
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 JavaScript的组成 JavaScript基础分为三个部分: ...
随机推荐
- 如何使用vuex
一.何为vuex? vuex其实是一种状态管理模式,那么什么是状态管理模式呢?简单的理解就是把一些状态或者数据集中到一个地方管理,然后所有的组件共享这些数据,当数据改变时,用到这些数据的组件也会相应的 ...
- JAVA NIO学习三:NIO 的非阻塞式网络通信
紧接着上一章,我们继续来研究NIO,上一章中我们讲了NIO 中最常见的操作即文件通道的操作,但实际上NIO的主要用途还是在于网络通信,那么这个时候就会涉及到选择器,这一章我们就会对其进行讲解操作. 一 ...
- Python 为何能坐稳 AI 时代头牌语言
原文链接:https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247487055&idx=2&sn=ca0fe8740 ...
- tomcat中使用mysql连接池的配置
1.下载相应的jar包,添加到工程中 需要下载的包主要有commons-pool2-2.2 commons-dbcp2-2.0.1-src commons-dbcp2-2.0.1 commons-c ...
- bug运输[辽宁2014年省队互测一]
奇奇怪怪的题目,不知道他要我们干什么. 我们观察一波局势,发现答案最大不过5.因为如果答案是6或以上的话,我们就至少要2^(5*5)个5*5的方格. 仔细计算一波时间复杂度,再信仰一波,坚信暴力压正解 ...
- thinkinginjava学习笔记10_容器
Java中并没有像Perl.Python.Ruby那样对容器有直接的支持,但是可以依靠容器类来完成相同的工作: 泛型 使用一个ArrayList对象可以保存一系列的对象,如: ArrayList ap ...
- tornado返回指定的http code
最近做web api,需要在接口返回异常时,返回对应的http code. 查了下tornado的文档,是通过set_status方法来设置返回的http code,做个记录. self.set_st ...
- 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!
1:开始没想分享的,后来看到有大佬分享如何使用Chrom的工具进行调试,哈哈哈哼,我就借着他的博客写一下我摸索的如何进行前后台数据交互吧(注:反正是自己瞎 捣鼓出来的,也许适合我,and我脑补一下吧, ...
- Android studio签名与代码混淆
签名: 应用程序升级:应用程序模块化:代码或者数据共享 混淆:混淆器将代码中的所有变量.函数.类的名称变为简短的英文字母代号,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义.
- 登陆模块的进化史,带大家回顾java学习历程(一)
一直在想着写点特别点的东西,让有兴趣学编程的人确实能学到点干货,今天就来随意写写. 大家在网上查找资料看到最多的demo估计就是登陆功能的演示了,为何大家偏爱拿登陆来做demo呢?因为行业应用类程序的 ...