DOM处理

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

class

class处理部分主要有四个

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

addClass:为元素添加一个class

removeClass:为元素删除一个class

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

hasClass : function(element, className) {
var re = new RegExp("\\b" + className + "\\b", "i");
if (element.className.match(re))
return true;
return false;
}, addClass : function(element, className) {
var re = new RegExp("\\s*" + className, "gi");
var eleClass = element.className;
if (!eleClass.match(re))
element.className = eleClass + " " + className;
}, removeClass : function(element, className) {
var re = new RegExp("\\s*" + className, "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

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

 
 

DOM处理的更多相关文章

  1. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  2. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  3. 页面嵌入dom与被嵌入iframe的攻防

    1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...

  4. 通俗易懂的来讲讲DOM

    DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...

  5. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  6. HTML DOM 对象

    本篇主要介绍HTML DOM 对象:Document.Element.Attr.Event等4个对象. 目录 1. Document 对象:表示文档树的根节点,大部分属性和方法都是对元素进行操作. 2 ...

  7. 重撸js_2_基础dom操作

    1.node 方法 返回 含义 nodeName String 获取节点名称 nodeType Number 获取节点类型 nodeValue String 节点的值(注意:文本也是节点) 2.inn ...

  8. 虚拟dom与diff算法 分析

    好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM

  9. 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?

    引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...

  10. jQuery学习之路(2)-DOM操作

    ▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...

随机推荐

  1. cralwer_爬虫代理中心的简要设计

    代理中心: 简单讲: 精细化控制限制资源的使用,保证有限资源的充分利用及有效性.支持动态增减,实时更新. 需求 rest api提供请求输入与输出 客户端使用代理心跳接收,用于更新代理的使用次数,被占 ...

  2. vim_编码配置文件_utf8乱码解决

    1:简化步奏 调整 :vimrc的脚本配置 编辑~/.vimrc文件,(没有的话新建个)加上如下几行: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb23 ...

  3. jg-table 过程2 ( jgTable )

    jg-table ( jgTable )  添加一些新的功能,这是多行表头支持,要添加到,现在支持拖放多行表来改变头部的宽度, 假设设置cloneTheadToFoot 能够自己主动翻转多行表头,这也 ...

  4. Cocos2d-android游戏引擎-介绍

    一.游戏引擎概念 什么是游戏引擎       游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计 ...

  5. IOS科研IOS开发笔记学习基础知识

    这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollVi ...

  6. 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...

  7. javascript日历插件

    原文:javascript日历插件 javascript日历插件 最近在尝试着写javascript日历插件,所以也到github上看国外人日历源码,或者国内人写的好点的,也在研究点,虽然看到网上有一 ...

  8. Objective-C系列

    我的Objective-C系列文章和坚持写博客的感想   做iOS开发有一段时间了,也有自己上线的App产品,也在坚持着发表技术博客总结自己所学的东西.在写博客的时候虽然博文中不免有错别字,但每句话都 ...

  9. 2. SQL Server数据库状态监控 - 错误日志

    原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...

  10. [Elasticsearch] 集群工作 - 第二部分

    本文翻译自Elasticsearch官方指南的life inside a cluster一章. 添加故障转移(Failover)功能 仅仅执行一个节点意味着可能存在着单点失败(Single point ...