[笔记]原生JS实现的DOM操作笔记
原生JS实现的DOM一系列操作参考:
- 原生JavaScript封装DOM库
- siblings: 原生JS-查找相邻的元素-siblings方法的实现
- addClass,removeClass,hasClass,toggleClass:原生js添加删除class
- 原生js添加删除class
代码如下:
var dom = {
/** 功能说明:匹配元素是否含有指定class
* @param el 指定的DOM元素
* @param className 匹配的class名
* */
hasClass:function(el,className){
return el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
},
/** 功能说明:给指定DOM元素添加class
* @param el 指定的DOM元素
* @param className 添加的class名
* */
addClass:function(el,className){
if(!this.hasClass(el,className)){
el.className += " " + className;
}
return el;
},
/** 功能说明:给指定DOM元素移除class
* @param el 指定的DOM元素
* @param className 移除的class名
* */
removeClass:function(el,className){
if(this.hasClass(el,className)){
var reg = new RegExp('(\\s|^)' + className +'(\\s|$)');
el.className = el.className.replace(reg,' ')
}
return el;
},
/** 功能说明:给指定的DOM元素添加或者删除class
* @param el 指定的DOM元素
* @parm className 添加或删除的class名
* */
toggleClass:function(el,className){
if(this.hasClass(el,className)){
this.removeClass(el,className);
}else{
this.addClass(el,className);
}
return el;
},
/** 功能说明:获取当前元素的兄弟节点
* @param el 当前DOM元素
* */
siblings:function(el){
var matched = []; //存放兄弟节点
var n = (el.parentNode || {}).firstChild;
for(; n; n = n.nextSibling){
if(n.nodeType === 1 && n !== el){
matched.push(n);
}
}
return matched;
}
};
获得class:
function getByClass(oParent,sClass){
if(oParent.getElementsByClassName){
return oParent.getElementsByClassName(sClass);
}else{
var allEle = oParent.getElementsByTagName("*"),
len = allEle.length,
reg = new RegExp('(\\b)' + sClass + '(\\b)','i'),
allReuslt = [],
i;
for( i=0; i < len; i ++){
if(allEle[i].className.search(reg) != -1){
allReuslt.push(allEle[i]);
}
}
return allReuslt;
}
}
获取样式:
function getStyle(ele,attr){
var result = '';
if(document.defaultView.getComputedStyle){
result = document.defaultView.getComputedStyle(ele,false)[attr];
}else{
result = ele.currentStyle[attr];
}
if(attr == 'opacity'){
return Math.round(parseFloat(result)*100);
}else{
return parseInt(result);
}
}
[笔记]原生JS实现的DOM操作笔记的更多相关文章
- 原生JavaScript常用的DOM操作
之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或 ...
- 原生js快速渲染dom节点
function renderDom(str){ var _div = document.createElement('div'); _div.innerHTML = str; var dom_tem ...
- js中的DOM操作汇总
一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...
- javascript dom编程艺术笔记第三章:DOM操作的5个基本方法
JavaScript的 DOM操作,主要是对DOM这三个字母中D.O.M的操作.D代表的是document(文档),即我们可以使用javascript对文档进行操作,O代表的是object(对象),对 ...
- javascript学习笔记(四):DOM操作HTML
当网页被加载时,浏览器会创建页面的文档对象模型Document Object Model,简称DOM Dom操作html 1:改变页面中所有HTML元素 2:改变页面中所有HTML属性 3:改变页面中 ...
- JS核心之DOM操作 下
目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...
- js练习【DOM操作】
完成效果: 演示地址:http://codepen.io/anon/pen/jPbYWq HTML: <!DOCTYPE html> <html lang="en" ...
- 原生js学习 选择dom
连bootstrap5 都抛弃jquery了,重新使用原生js来写,所以最近在学习原生js. 一.选择dom元素: id let sure=document.getElementById('sure' ...
- 【2017-03-28】JS基础、DOM操作
一.JS基础 1.javascript功能 ⑴进行数据运算 ⑵控制浏览器功能 ⑶控制元素的属性.样式.内容 2.javascript位置和格式 可以放在html页的任意位置,也可以创建一个以js结尾的 ...
随机推荐
- Mesos源码分析(15): Test Executor的运行
Test Executor的代码在src/examples/test_executor.cpp中 int main(int argc, char** argv) { TestExecutor ...
- SUSE12Sp3-MongoDB安装
1.解压 sudo mkdir /usr/local/mongodb # 创建mongodb目录 将mongodb-linux-x86_64-suse12-4.0.6.tgz复制到/usr/local ...
- 如何随机排序数组?使用多种方式!递归,迭代,洗牌,sort方法!
方式1: 使用sort 方法 ---- // 方法1 使用sort 方法 var arr = [1,2,3,4,5,6,7,8]; function foo(arr) { var cloneArr = ...
- python批量启动多线程
还未了解多线程的请查看博文 python3多线程趣味详解 python3多线程趣味详解 只是介绍了 python 多线程的使用,对于批量启动线程来说有些不适用,于是出现如下方法: 建立一个线程池,并将 ...
- node开发备注
设置环境变量 // 命令行启动: "scripts": { "start": "export NODE_ENV=dev && node ...
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...
- 多机部署redis5.0集群环境
redis5.0集群部署 一.集群介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redi ...
- Java 多线程(一)—— 概念的引入
并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生): 并发:指两个或多个事件在一个时间段内发生. 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 C ...
- Python爬虫入门教程 11-100 行行网电子书多线程爬取
行行网电子书多线程爬取-写在前面 最近想找几本电子书看看,就翻啊翻,然后呢,找到了一个 叫做 周读的网站 ,网站特别好,简单清爽,书籍很多,而且打开都是百度网盘可以直接下载,更新速度也还可以,于是乎, ...
- MacPro4,1升级到MacPro5,1
收了一台老MacPro,2009年版本,准确型号是"MacPro4,1".机器很好,美中不足的是,太老了.硬件还好说,很多部件都可以单独采购升级,特别是有了淘宝,几乎只要有的东西, ...