原生JS实现的DOM一系列操作参考:

代码如下:

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操作笔记的更多相关文章

  1. 原生JavaScript常用的DOM操作

    之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或 ...

  2. 原生js快速渲染dom节点

    function renderDom(str){ var _div = document.createElement('div'); _div.innerHTML = str; var dom_tem ...

  3. js中的DOM操作汇总

    一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...

  4. javascript dom编程艺术笔记第三章:DOM操作的5个基本方法

    JavaScript的 DOM操作,主要是对DOM这三个字母中D.O.M的操作.D代表的是document(文档),即我们可以使用javascript对文档进行操作,O代表的是object(对象),对 ...

  5. javascript学习笔记(四):DOM操作HTML

    当网页被加载时,浏览器会创建页面的文档对象模型Document Object Model,简称DOM Dom操作html 1:改变页面中所有HTML元素 2:改变页面中所有HTML属性 3:改变页面中 ...

  6. JS核心之DOM操作 下

    目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...

  7. js练习【DOM操作】

    完成效果: 演示地址:http://codepen.io/anon/pen/jPbYWq HTML: <!DOCTYPE html> <html lang="en" ...

  8. 原生js学习 选择dom

    连bootstrap5 都抛弃jquery了,重新使用原生js来写,所以最近在学习原生js. 一.选择dom元素: id let sure=document.getElementById('sure' ...

  9. 【2017-03-28】JS基础、DOM操作

    一.JS基础 1.javascript功能 ⑴进行数据运算 ⑵控制浏览器功能 ⑶控制元素的属性.样式.内容 2.javascript位置和格式 可以放在html页的任意位置,也可以创建一个以js结尾的 ...

随机推荐

  1. return和throw某些特性相似

    拷贝构造函数的调用拷贝构造函数会在以下三中情况下被调用(1)当类的一个对象去初始化该类的另一个对象时 int main(){ Point a(1,2); Point b(a);//用对象a初始化对象b ...

  2. oracle 分析函数和开窗函数

    最近遇到一个需求,将查询出的数据按照地区分组,随机取出每个区域的2条数据,这里用到了oracle的分析和开窗函数: 最终写出的sql如下: select * from (select region,r ...

  3. [Swift]LeetCode238. 除自身以外数组的乘积 | Product of Array Except Self

    Given an array nums of n integers where n > 1,  return an array outputsuch that output[i] is equa ...

  4. [Swift]LeetCode383. 赎金信 | Ransom Note

    Given an arbitrary ransom note string and another string containing letters from all the magazines, ...

  5. [Swift]LeetCode938. 二叉搜索树的范围和 | Range Sum of BST

    Given the root node of a binary search tree, return the sum of values of all nodes with value betwee ...

  6. Java数据结构与算法 - 外部存储

    Q: 什么是外部存储? A: 外部存储特指某类磁盘系统,例如在大多数台式电脑或服务器中的硬盘. Q: 如何访问外部存储? A: 我们所学的数据结构都是假设数据存储在内存中,但是,在很多情况下要处理的数 ...

  7. Spring多线程批量发送邮件(ThreadPoolTaskExecutor)

    1,需求:使用多线程批量发送邮件 需要批量发送邮件大概400封左右,但是因为发送邮件受网络限制,所以经常导致等待超时.所以就想到了使用多线程来发邮件,因为是异步的所以返回结果不受发邮件影响. 2,思路 ...

  8. PHP中的反射

    PHP中的反射 PHP5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 此外,反射 API 提供了方法来取出函数.类和方法中的文档注释. 请注意部分内部 API 丢失 ...

  9. Asp.Net Core中利用Seq组件展示结构化日志功能

    在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...

  10. 线程安全(上)--彻底搞懂volatile关键字

    对于volatile这个关键字,相信很多朋友都听说过,甚至使用过,这个关键字虽然字面上理解起来比较简单,但是要用好起来却不是一件容易的事.这篇文章将从多个方面来讲解volatile,让你对它更加理解. ...