OOP & DOM


let Dom = Dom || {};
Dom = {
checkValType(val) {
let typeString = Object.prototype.toString.call(val);
switch (typeString) {
case '[object String]':
return 'String';
case '[object Boolean]':
return 'Boolean';
case '[object Function]':
return typeof val === 'symbol' ? 'Symbol' : 'Function';
case '[object Array]':
return 'Array';
case '[object Error]':
return 'Error';
case '[object Date]':
return 'Date';
case '[object RegExp]':
return 'RegExp';
case '[object Object]':
return 'Object';
case '[object Null]':
return 'Null';
case '[object Underfined]':
return 'Underfined';
default:
break;
}
},
setStyle(elem, obj) { //批量设置样式,elem要设置的元素,obj={'height':'5px','color':'red'}等样式集合
for (let key in obj) {
elem.style[key] = obj[key];
}
return this; //返回上下文方便链式调用
},
getStyle(elem, styleName, pseudoElt = null) { //pseudoElt伪元素例如getStyle(ele,'height',':after'),这样就匹配ele伪元素的样式
return (window || document.defaultView).getComputedStyle(elem, pseudoElt)[styleName];
},
addClass(elem, className) {
if (this.checkValType(className) === 'String') { //单个时传入字符串
elem.classList.add(className);
} else if (this.checkValType(className) === 'Array') { //多个时传入数组
elem.classList.add(...className);
}
return this;
},
removeClass(elem, className) {
if (this.checkValType(className) === 'String') { //单个时传入字符串
elem.classList.remove(className);
} else if (this.checkValType(className) === 'Array') { //多个时传入数组
elem.classList.remove(...className);
}
return this;
},
hasClass(elem, className) {
if (this.checkValType(className) === 'String') { //单个时传入字符串
elem.classList.contains(className);
} else if (this.checkValType(className) === 'Array') { //多个时传入数组
elem.classList.contains(...className);
}
return this;
},
toggleClass(elem, className) { //只操作单个class
elem.classList.toggle ? elem.classList.toggle(className) : (this.hasClass(elem, className) ? this.removeClass(elem, className) : this.addClass(elem, className));
return this;
},
siblings(elem){
let matched=[];
let n = (elem.parentNode || {}).firstChild;
for(;n;n= n.nextSibling){
if(n.nodeType===1&&n!==elem){
matched.push(n);
}
}
return matched;
},
sibling(cur,dir){//工具函数
while((cur=cur[dir])&&cur.nodeType!==1){}
return cur;
},
next(elem){
return this.sibling(elem,"nextSibling");
},
prev(elem){
return this.sibling(elem,"previousSibling");
} };

最新文章

  1. 用 CSS 隐藏页面元素
  2. 【Android学习】《Android开发视频教程》第二季笔记(未完待续)
  3. 昨天的这个先补上--这个是关于 JQ 的移动 和 渐变特效的点击事件
  4. WCF批量打开服务
  5. Openvswitch原理与代码分析(7): 添加一条流表flow
  6. Linux下双网卡绑定(bonding技术)
  7. oj 1031 random permutation
  8. log4j 异步日志问题分析
  9. 帝国cms无法注册登录快速解决方法 附路径
  10. [原]1856-More is better-基础并查集
  11. C# 通过接口 post 请求
  12. Finance
  13. [刷题]算法竞赛入门经典(第2版) 4-4/UVa253 - Cube painting
  14. java中求质数(素数)的问题
  15. RfcConfig 类 主要解决Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986
  16. dubbo学习笔记1
  17. Maven中央仓库地址整理
  18. Java(Android)线程池zz
  19. Mad Libs游戏 & 华氏温度与摄氏温度转换
  20. Http User Agent Example

热门文章

  1. hdu-3371 Connect the Cities---kruskal
  2. Android(java)学习笔记100:使用Dexdump等工具进行反编译
  3. 父子组件通信(vuex的方式)
  4. python_11_guess任性玩
  5. C#的接口基础教程之二 定义接口
  6. c++中的结构化语句 判断语句if 分支语句switch 循环语句 while 和 do while 循环语句for的使用
  7. Oracle10g安装过程中的Configuration Assistant配置失败的问题。
  8. 51nod——1402最大值、2479小b分糖果 (套路)
  9. jrtplib移植
  10. Uva 派 (Pie,NWERC 2006,LA 3635)