原生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. 构建一个 预装 pm2 的 node 项目 docker 底包

    Dockerfile: 创建 dockerfile 文件, 命名为 dockerfile-yourProject-node.8.12.0-pm2 # MAGE: yourGroup/yourProje ...

  2. 最简单的 nginx 负载均衡,只能演示,企业中最好不用

    修改nginx.conf 配置,重启nginx即可 upstream 包名{ ip_hash; #使用此功能,权重和备份都不能使用!一台机器永远只连同一台机子 server IP:端口 weight= ...

  3. 离线安装多版本node,使用nvm管理

    windows环境下,使用nvm客户以方便地管理多个node版本,但有时候可能需要离线安装node版本. 结合网络搜搜索结果,多次尝试后我成功在离线安装了多个node版本,方法: 1.在其他联网环境下 ...

  4. 认识Python和基础知识

    一.第一个Python程序 用vim编写,格式: vim hello.py 然后按 i 进入插入模式开始写代码,注意所有的代码都要用英文输入法,先写括号和引号,再在引号里面写内容(为了避免引号.括号不 ...

  5. 如何用VSCode调试Vue.js

    VS Code相关插件:Chinese (Simplified) Language Pack for Visual Studio Code Debugger for Chrome ESLint Vet ...

  6. 选择 25k 的 996 还是 18k 的 965

    阅读本文大概需要 3.7 分钟. 文中部分内容来源:http://h5ip.cn/hSDk 最近的 996.ICU 话题持续在火爆,一般热点新闻的热度持续时间为一星期,这次是程序们的集体发声导致,戳中 ...

  7. [Swift]LeetCode435. 无重叠区间 | Non-overlapping Intervals

    Given a collection of intervals, find the minimum number of intervals you need to remove to make the ...

  8. [Swift]LeetCode671. 二叉树中第二小的节点 | Second Minimum Node In a Binary Tree

    Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ...

  9. [Swift]LeetCode802. 找到最终的安全状态 | Find Eventual Safe States

    In a directed graph, we start at some node and every turn, walk along a directed edge of the graph.  ...

  10. [Swift]LeetCode942. 增减字符串匹配 | DI String Match

    Given a string S that only contains "I" (increase) or "D" (decrease), let N = S. ...