/* 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));
}

最新文章

  1. Java设计模式之策略模式(Strategy)
  2. @Html.Raw()
  3. 【OS】分页和分段
  4. jQuery中的get()方法
  5. JQuery获取元素的方法总结
  6. jquery插件-表单验证插件-rules
  7. 【OpenGL】VS2010环境配置 [转]
  8. [BZOJ 1295][SCOI2009]最长距离(SPFA+暴力)
  9. ant 执行到javac时运行中止,怎么办?
  10. hibernate.cfg.xml文件的说明
  11. replicate-do-db参数引起的MySQL复制错误及处理办法
  12. max os 安装python模块PIL
  13. [C++程序设计]有默认参数的函数
  14. 简单理解java中timer的schedule和scheduleAtFixedRate方法的区别
  15. Windbg DUMP
  16. Mybatis事务(二)事务隔离级别
  17. PHP环境在7以上的项目报错A non-numeric value encountered
  18. iTOP-4412开发板-串口转接小板的使用文档
  19. css背景图宽度只适应,高度不变
  20. .net core 使用log4net日志组件

热门文章

  1. python学习之字符编码
  2. Ceizenpok’s formula Gym - 100633J 扩展Lucas定理 + 中国剩余定理
  3. 使用SSL配置Nginx反向代理的简单指南
  4. 语义分割丨DeepLab系列总结「v1、v2、v3、v3+」
  5. css与JS知识整理
  6. AJPFX分享JAVA修饰符详解
  7. 如何让局域网其他计算机访问您的Mysql???
  8. 基于 Azure IaaS 搭建企业官网的规划和实践
  9. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
  10. Cayley凯莱定理——一一对应