js操作DOM元素
创建
document.createElement()
查找
document.getElementById() 返回对拥有指定 id 的第一个对象的引用。
document.getElementByName() 返回带有指定名称的对象集合。
document.getElementByTagName() 返回带有指定标签名的对象集合。
document.getElementsByClassName() 返回文档中所有指定类名的元素集合。存在兼容性问题,IE6/7/8不支持
这里,重新实现一个函数myGetElementsByClassName,兼容IE6/7/8
function myGetElementByClassName(classname) {
var ele = [];
if (!document.getElementsByClassName) {
console.log("这是IE6/7/8吧");
var dom = document.all ? document.all : document.getElementsByTagName('*');
for (var i = 0; i < dom.length; i++) {
// if (dom[i].className == classname)
// ele.push(dom[i]);
var reg=new RegExp('\\b'+classname+'\\b','g');
if (reg.test(dom[i].className)) {
ele.push(dom[i]);
}
}
} else {
ele = document.getElementsByClassName(classname);
console.log('不是IE6/7/8 bro');
}
return ele;
}
添加
appendChild(),返回新增的节点
如果传入到appendChild中的已经是文档的一部分,则把该节点移动到新的位置
还有一种是insertBefore(),这种方法可以插入到指定位置。接收两个参数,第一个是要插入的节点,第二个是作为参照的元素。要插入的节点会成为作为参照的节点的previousSibling。
替换
replaceChild() 接收两个参数,第一个是要插入的节点,第二个是要替换的节点。
在使用replaceChild()插入一个节点时,该节点的关系指针都会从被它替换的节点复制过来。
移除
removeChild() 接收一个参数,要移除的节点。
复制
cloneNode() 用于创建调用这个方法的节点的一个完全相同的副本。
接收一个布尔值参数,如果为true则执行深复制,也就是复制节点以及整个子节点树;如果为false则执行浅复制,也就是只复制节点本身。
复制后返回的节点副本属于文档所有,但是并没有为它指定父节点,需要其他方法来添加到文档中。
移动
移动元素一般是移动有的节点,三种方法:
第一种,使用appendChild()
第二种,使用insertBefore()
第三种,先复制要移动的节点,移除原来这个节点,然后把新得到的节点添加到文档中。
<div id="div1">11111111</div>
<div id="div2">22222222</div>
<div id="div3">33333333</div>
<script type="text/javascript">
var div1 = document.getElementById('div1');
var div2 = document.getElementById('div2');
var div3 = document.getElementById('div3');
//第一种方法
document.body.appendChild(div1);
//第二种方法
document.body.insertBefore(div1,div3);
//第三种方法
var newNode = div1.cloneNode(true);
document.body.removeChild(div1);
document.body.insertBefore(newNode,div3);
</script>
js操作DOM元素的更多相关文章
- JS操作DOM元素属性和方法
Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访 ...
- Js操作DOM元素及获取浏览器高宽
在JavaScript中,经常会来获取Document文档元素,是 HTML 文档对象模型的英文缩写,Document Object Model for HTML,是基于浏览器编程,HTML DOM ...
- 【面试必备】javascript操作DOM元素
前言 时间过的真快,不知不觉就到年底了.问问自己,这一年你对自己的工作满意吗? 评价标准是什么呢?当然是马云的那两条准则了:钱给到了吗?干的爽吗?如果答案都是no,那么,你准备好跳槽了吗? 为了应对年 ...
- JS/JQuery操作DOM元素笔记
原因 自己目前在搭建一个.NET Core的框架,正在构建权限这块的东西,今天设置权限界面,需要使用JavaScript操作DOM元素,记录一下. 页面大概是酱紫的(我使用的AdminLTE和LayU ...
- 框架操作DOM和原生js操作DOM比较
问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...
- JS操作DOM对象——JS基础知识(四)
一.JavaScript的三个重要组成部分 (1)ECMAScript(欧洲计算机制造商协会) 制定JS的规范 (2)DOM(文档对象模型)重点学习对象 处理网页内容的方法和接口 (3)BOM(浏览器 ...
- js操作DOM对象
js操作DOM对象 (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...
- 原生js操作DOM基础-笔记
原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...
- 原生js操作Dom节点:CRUD
知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...
随机推荐
- CodeForces-747C
直接模拟就行,用一个数组保存某个server上次是在哪个task里面即可很方便判断它现在是否可用. AC代码: #include<cstdio> #include<cstring&g ...
- [Note] Stream Computing
Stream Computing 概念对比 静态数据和流数据 静态数据,例如数据仓库中存放的大量历史数据,特点是不会发生更新,可以利用数据挖掘技术和 OLAP(On-Line Analytical P ...
- 文本处理三剑客之grep&正则表达式
grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来.grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户. 一.gr ...
- 终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐
我之前的面试题停了很久,是因为 - 我写书去了. 前言 我于2012年3月开始工作,到现在马上就满六年了.这六年里,我从一个连Sql server是什么都不知道,只会写最简单的c#的程序员开始做起,一 ...
- java容器类分析:Collection,List,ArrayList
1. Iterable 与 Iterator Iterable 是个接口,实现此接口使集合对象可以通过迭代器遍历自身元素. public interface Iterable<T> 修饰符 ...
- hiredis的安装
Hiredis客户端下载地址:https://github.com/antirez/hiredis/zipball/master Hiredis安装步骤: tar zxvf antirez-hired ...
- 第5章 PCIe总线的事务层
事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义.PCIe总线继承了PCI/PCI-X总线的 ...
- ubuntu 重启命令,ubuntu 重启网卡方法
ubuntu 重启命令 重启命令:1.reboot2.shutdown -r now 立刻重启(root用户使用)3.shutdown -r 10 过10分钟自动重启(root用户使用)4.shutd ...
- setsockopt()用法(参数详细说明) recv、send的超时处理
源于recv send 阻塞和非阻塞 int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); s(套 ...
- RHEL64 缺少ISO 9660图像 安装程序试图挂载映像#1,在硬盘上无法找到该映像
用光盘安装Linux,很容易,按照提示一步一步就好.如果没有光驱,只好想办法用硬盘或者U盘安装了. 首先说说怎样用U盘启动Linux的安装程序:1.将ISO镜像文件拷贝到U盘中,并解压到U盘根目录.将 ...