DOM处理
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处理的更多相关文章
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- 页面嵌入dom与被嵌入iframe的攻防
1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...
- 通俗易懂的来讲讲DOM
DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML DOM 对象
本篇主要介绍HTML DOM 对象:Document.Element.Attr.Event等4个对象. 目录 1. Document 对象:表示文档树的根节点,大部分属性和方法都是对元素进行操作. 2 ...
- 重撸js_2_基础dom操作
1.node 方法 返回 含义 nodeName String 获取节点名称 nodeType Number 获取节点类型 nodeValue String 节点的值(注意:文本也是节点) 2.inn ...
- 虚拟dom与diff算法 分析
好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM
- 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?
引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...
- jQuery学习之路(2)-DOM操作
▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...
随机推荐
- oracle_解锁表_解锁用户
1.解锁用户 以dba身份登录 sqlplus / as sysdba alter user scott account unlock; 2.解锁表 alter system kill ...
- 【UVA】580-Critical Mass
依据递推公式计算,须要打表不然可能会超时. #include<cstdio> #include<cstring> #include<iostream> #inclu ...
- 从[java.lang.OutOfMemoryError: Java heap space]恢复
出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的. 一般来说都是能够事前可控解决的. 可是假设不可控的 ...
- Android游戏开发研究与主角在地图滚动
让人感动的地图过程平滑滚动 玩过rpg朋友应该都知道RPG的游戏地图一般都比較大 今天我和大家分享一下在RPG游戏中怎样来处理超出手机屏幕大小的游戏地图. 如图所看到的为程序效果 ...
- C语言练手自己编写学生成绩管理系统
#include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { ]; ]; float Mark1; flo ...
- MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...
- SQL表连接
背景 在上次的自考科目<数据库系统原理>中.已经接触到了关于数据库表连接的一些知识,近期的学习过程中又用到了关于数据库表的连接问题,趁此再跟大家一起回想一下. 导图总结 首先用一张思维导图 ...
- Android基础笔记(十)- 帧动画、补间动画具体解释、对话框
帧动画 补间动画Tween Animation 对话框以及面试中的注意点 帧动画 帧动画非常easy,我们首先看一下Google官方解释This is a traditional animation ...
- C# 笔试题,看你会几道题
1. Which interface you need to implement to support for each? IEnumerator IEnumerable ICompare ...
- Java泛型和集合之泛型VS模板
Java的泛型很像C++中的模板,说到Java 泛型和C++中的模板的关系时,有两个重要的方面需要被考虑到:语法和语义.语法看起来是相似的,可是语义却明显是不同的. 在语法上讲,选择尖括号 是因为他 ...