/* 2014年3月16号 常用DOM工具库*/
var DOM={};

DOM.getElesByClass=function (strClassName,context){
if(typeof strClassName){
context=context||document;

if(context.nodeType==1||context.nodeType==9){
if(context.getElementsByClassName)
return context.getElementsByClassName(strClassName);
var reg=/^\s+|\s+$/g;
strClassName=strClassName.replace(reg,"");
var aClass=strClassName.split(/\s+/);
var eles=context.getElementsByTagName("*");
for(var i=0;i<aClass.length;i++){
eles=byClass(aClass[i],eles);
}
return eles;
}else{
throw new Error("第二个参数类型错误");
}
}else{
throw new Error("第一个参数必需是一个字符串");
}

function byClass(strClassName,eles){
var reg=new RegExp("(^| )"+strClassName+"( |$)");
//var eles=document.getElementsByTagName("*");
var a=[];//把找到的放到这个数组里
for(var i=0,len=eles.length;i<len;i++){
var ele=eles[i];
if(reg.test(ele.className)){//5
a.push(ele);
}
}
return a;
}
}

DOM.addClass=function(ele,strClassName){
var reg=new RegExp("(?:^| )"+strClassName+"(?: |$)");
if(!reg.test(ele.className))
ele.className+=" "+strClassName;

}
DOM.removeClass=function(){
var reg=new RegExp("(?:^| )"+strClassName+"(?: |$)","g");
ele.className=ele.className.replace(reg,"");

}

DOM.getIndex=function(ele){
var pre=ele.previousSibling;
var n=0;
while(pre){
if(pre.nodeType===1){
n++
}
pre=pre.previousSibling;
}
return n;

}

DOM.offset=function(ele){
var l=ele.offsetLeft;
var t=ele.offsetTop;

var p=ele.offsetParent;
while(p){
if(window.navigator.userAgent.indexOf("MSIE 8")>-1){
l+=p.offsetLeft;
t+=p.offsetTop;
}else{
l+=p.offsetLeft+p.clientLeft;
t+=p.offsetTop+p.clientTop;
}
p=p.offsetParent;
}
return {left:l,top:t}
}

DOM.getChildren=function(ele,tagName){//tagName用来指定标签名
ele.children//获得子元素
var nodes=ele.childNodes;
var a=[];
if(tagName===undefined){//如果没有传第二参数
for(var i=0,len=nodes.length;i<len;i++){
var node=nodes[i];
if(node.nodeType===1){
a.push(node);
}
}
}else{
if(typeof tagName=="string"){
tagName=tagName.toUpperCase();
for(var i=0,len=nodes.length;i<len;i++){
var node=nodes[i];
if(node.nodeName===tagName){
a.push(node)
}
}
}else{
throw new Error("第二个参数类型错误");
}

}
return a;
}
DOM.preSiblings=function(ele){
var p=ele.previousSibling;
var a=[];
while(p){
if(p.nodeType===1){
a.push(p);
}
p=p.previousSibling;
}
a.reverse();
return a;

}
DOM.nextSiblings=function(ele){
var n=ele.nextSibling;
var a=[];
while(n){
if(n.nodeType===1){
a.push(n);
}
n=n.nextSibling;
}
return a;
}

DOM.siblings=function(ele){
return DOM.preSiblings(ele).concat(DOM.nextSiblings(ele));
}

【js】--常用DOM库工具的更多相关文章

  1. 【js常用DOM方法】

    介绍几个js DOM的常用方法 获取元素节点 getElementById  getElementsByTagName  getElementsByClassName 先写一个简单的网页做测试: /* ...

  2. js常用DOM操作

    在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作.在这里记录一下. ...

  3. vue.js 常用组件库

    vux github ui demo:https://github.com/airyland/vux Mint UI 项目主页:http://mint-ui.github.io/#!/zh-cndem ...

  4. js 常用 DOM 元素宽高

    提示:document.documentElement 和 document.getElementsByTagName('html')[0] 是一样的: 1.视口大小(不包括滚动条,视口字面理解当然是 ...

  5. 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取

    爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...

  6. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  7. Node.js 常用工具

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...

  8. js常用的工具函数

    JS选取DOM元素的方法注意:原生JS选取DOM元素比使用jQuery类库选取要快很多1.通过ID选取元素document.getElementById('myid');2.通过CLASS选取元素do ...

  9. Node.js 常用工具util包

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ...

随机推荐

  1. 语义分割丨DeepLab系列总结「v1、v2、v3、v3+」

    花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅. DeepLabv1 Semantic image segmen ...

  2. 如何在spring环境中做单元测试

    在测试类的上方加入以下注解 @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:spring.xm ...

  3. 需求管理是CMM可重复级中的6个关键过程域之一,其主要目标是__________。A.客观地验证需求管理活动

    需求管理是CMM可重复级中的6个关键过程域之一,其主要目标是__________.A.客观地验证需求管理活动       需求管理是CMM可重复级中的6个关键过程域之一,其主要目标是_________ ...

  4. dbf 工程模式连接(vfp c# )

    首先现在微软官网下载“Microsoft OLE DB Provider for Visual FoxPro 9.0”驱动 下载完成后得到“VFPOLEDBSetup.msi” 双击安装即可在“C:\ ...

  5. GIMP 无法设置中文的问题解决

    首先按照网上说的安装了language-pack-gnome-zh-hant 参考链接:http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?top ...

  6. kafka java api生产者

    import java.util.HashMap; import java.util.List;import java.util.Map;import java.util.Properties; im ...

  7. CF1066B Heaters

    思路: 从左向右贪心选择能覆盖当前位置的最靠右的那个heater即可,和poj radar installation类似. 实现: #include <iostream> #include ...

  8. vue从入门到开发--3-基础语法

    一:v-text指令 指令v-text:可通过该指令绑定动态数据(动态数据我觉得可以是从服务器请求下来的数据,保存在data里边,然后动态显示在文档中,因为是一个一个的组件,数据应该不会很多吧,就只有 ...

  9. 学习笔记——Paint 1(MaskFilter)

    对于Paint没有很好的深入的学习过,在工作之余再巩固巩固. 1.Paint的BlurMaskFilter(模糊效果) 自定义一个View继承View 重写里面的onDraw方法.这里直接上代码了: ...

  10. hdu 3555 Bomb 炸弹(数位DP,入门)

    题意: 给一个数字n,求从1~n中有多少个数是含有49的,比如49,149,1490等都是含49的. 思路: 2^64也顶多是十进制的20多位,那么按十进制位来分析更简单.如果能计算k位十进制数中分别 ...