博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
据说每个大牛、小牛都应该有自己的库——DOM处理
阅读量:7044 次
发布时间:2019-06-28

本文共 4567 字,大约阅读时间需要 15 分钟。

这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多

class

class处理部分主要有四个

hasClass:检查元素是否包含某个class

addClass:为元素添加一个class

removeClass:为元素删除一个class

toggleClass:切换元素的class, 如果只传入一个class,则切换这个class的有无;如果传入两个class,则元素删除当前class,替换为另一个

hasClass : function(element, className) {            var re = new RegExp("(^|\\s)" + className + "(\\s|$)", "i");            if (element.className.match(re))                return true;            return false;        },        addClass : function(element, className) {            var re = new RegExp("(^|\\s)" + className + "(\\s|$)", "gi");            var eleClass = element.className;            if (!eleClass.match(re))                element.className = eleClass + " " + className;        },        removeClass : function(element, className) {            var re = new RegExp("(^|\\s)" + className + "(\\s|$)", "gi");            var eleClass = element.className;            eleClass = eleClass.replace(re, "");            if (element.className != eleClass)                element.className = eleClass;        },                toggleClass:function(element,class1,class2){            if(class2!=undefined){                if(ssLib.hasClass(element,class1)){                    ssLib.removeClass(element,class1);                    ssLib.addClass(element,class2);                }else if(ssLib.hasClass(element,class2)){                    ssLib.removeClass(element,class2);                    ssLib.addClass(element,class1);                }            }else{                if(ssLib.hasClass(element,class1)){                    ssLib.removeClass(element,class1);                }else{                    ssLib.addClass(element,class1);                }            }        },

 

元素尺寸

元素尺寸有两个方法

getRect:获取元素尺寸,同时包含其上下左右四个边的位置

getViewPortSize:获取可视窗口(ViewPort,不含滚动条)尺寸

getScrollSize:获取元素(包含滚动条)尺寸

getRect : function(element) {            var rect = element.getBoundingClientRect();            if (typeof rect.width == 'undefined') {                _rect = {                    width : rect.right - rect.left,                    height : rect.bottom - rect.top,                    top : rect.top,                    bottom : rect.bottom,                    left : rect.left,                    right : rect.right                };                return _rect;            }            return rect;        },        getViewPortSize : function() {            if (document.compatMode == "CSS1Compat") {                return {                    width : document.documentElement.clientWidth,                    height : document.documentElement.clientHeight                };            } else {                return {                    width : document.body.clientWidth,                    height : document.body.clientHeight                };            }        },        getScrollSize : function(element) {            var e = element                    || (document.compatMode == "CSS1Compat" ?                             document.documentElement: document.body);            return {               width : Math.max(element.scrollWidth, element.clientWidth),                height : Math.max(element.scrollHeight, element.clientHeight)
};        },

 

元素位置

getScrollPos:获取元素滚动条位置

getViewPortPos:获取元素相对于可视窗口(ViewPort,不包括滚动条)的位置

getAbsolutePos:获取元素相对于文档(包含滚动条)位置

getOffsetPos:获取文档相对于父容器位置

getScrollPos : function(element) {            var e = element                    || (document.compatMode == "CSS1Compat" ? document.documentElement                            : document.body);            return {                x : e.scrollTop,                y : e.scrollLeft            };        },        getViewPortPos : function(element) {            var rect = element.getBoundingClientRect();            return {                x : rect.left,                y : rect.top            };        },        getAbsolutePos : function(element) {            var rect=element.getBoundingClientRect();            var doc = document.compatMode == "CSS1Compat" ? document.documentElement                    : document.body;            return{                x:rect.left+Math.max(doc.scrollLet,doc.clientLeft),                y:rect.top+Math.max(doc.scrollTop,doc.clientTop)            };        },                getOffsetPos:function(element){            return{                x:element.offsetLeft,                y:elementoffsetTop            };        }

元素属性/样式

这个借鉴了一下jQuery的写法

attr:获取/设置元素的属性值

css:获取/设置元素的style

这两个函数是临时想到的,还没想好怎么写,明天晚上补上吧

PS.最近公司太忙,拖了这么久终于补上了,由于内容不少,另外写了一篇,另外由于这次写的仓促,除了很多漏洞,谢谢大家不吝指教,感觉进步了很多

转载于:https://www.cnblogs.com/dolphinX/p/3308930.html

你可能感兴趣的文章
Using Autorelease Pool Blocks
查看>>
spring-struts-mybatis整合错误集锦
查看>>
Maven 通过maven对项目进行拆分、聚合(重点)
查看>>
TWaver版3D化学元素周期表
查看>>
Java 中最常见的 5 个错误
查看>>
[AWS vs Azure] 云计算里AWS和Azure的探究(2)
查看>>
查看是否安装.NET Framework、.NET Framework的版本号、CLR版本号
查看>>
数据结构基础温故-5.图(下):最短路径
查看>>
调试Release发布版程序的Crash错误(转)
查看>>
深入浅出话VC++(2)——MFC的本质
查看>>
跟我一起学WCF(5)——深入解析服务契约[上篇]
查看>>
Kinect应用开发实战:用最自然的方式与机器对话
查看>>
JavaScript验证手机号码
查看>>
微软免费杀毒软件MSE最新版本释出
查看>>
诊断 Java 代码: 提高 Java 代码的性能 尾递归转换能加快应用程序的速度,但不是所有的 JVM 都会做这种转换...
查看>>
一次数据库hang住的分析过程
查看>>
ArcGIS使用字体文件制作符号库!
查看>>
Cocoa框架类之间的继承关系
查看>>
Windows安全认证是如何进行的?
查看>>
dll文件
查看>>