【js】--常用DOM库工具
/* 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库工具的更多相关文章
- 【js常用DOM方法】
介绍几个js DOM的常用方法 获取元素节点 getElementById getElementsByTagName getElementsByClassName 先写一个简单的网页做测试: /* ...
- js常用DOM操作
在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作.在这里记录一下. ...
- vue.js 常用组件库
vux github ui demo:https://github.com/airyland/vux Mint UI 项目主页:http://mint-ui.github.io/#!/zh-cndem ...
- js 常用 DOM 元素宽高
提示:document.documentElement 和 document.getElementsByTagName('html')[0] 是一样的: 1.视口大小(不包括滚动条,视口字面理解当然是 ...
- 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取
爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
- Node.js 常用工具
Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...
- js常用的工具函数
JS选取DOM元素的方法注意:原生JS选取DOM元素比使用jQuery类库选取要快很多1.通过ID选取元素document.getElementById('myid');2.通过CLASS选取元素do ...
- Node.js 常用工具util包
Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ...
随机推荐
- Retrofit实现Delete请求
//设置取消关注 @Headers("Content-Type:application/x-www-form-urlencoded") @HTTP(method = "D ...
- mac 终端查看端口命令
查看 端口所在线程 lsof -i:8080 mac-abeen:spider abeen$ lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF ...
- zTree树插件动态加载
需求: 由于项目中家谱图数据量超大,而一般加载方式是通过,页面加载时 zTree.init方法进行数据加载,将所有数据一次性加载到页面中.而在项目中家谱级别又非常广而深,成千上万级,因此一次加载,完全 ...
- 操作messageBox类
我们经常操作messagebox类,有时候我们又分不清一些参数,下面是一些操作messageBox的常用方法: public static class ClsMsg { public static v ...
- asp.net网页跳转
1.Response.Redirect("http://www.bcbbs.net",false); 目标页面和原页面可以在2个服务器上,可输入网址或相对路径.后面的bool ...
- linux下mysql中文乱码
登录mysql执行mysql> show variables like 'character%';发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my.c ...
- Linux用户管理-用户账号管理
一.用户账号的增.删.改.查 1>添加用户------useradd 注:1.用户名不应是纯数字或者以数字开头 2.将登陆shell改为/sbin/nologin可禁止用户登录 格式:usera ...
- android Random的使用
一.Random 此类的实例用于生成伪随机数流.此类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改. 如果用相同的种子创建两个 Rando ...
- [Ubuntu]清除系统磁盘垃圾
操作步骤: 1.sudo apt-get autoremove(卸载系统中所有未被使用的依赖关系) 2.sudo apt-get clean(清除所有缓存的包文件) 以上操作绿色无害,对系统无影响.
- Drools应用实例
Drools 实例介绍 Drools编译与运行: 在Drools当中,规则的编译与运行要通过Drools提供的各种API来实现,这些API总体来讲可以分为三类:规则编译.规则收集和规则的执行. Kmo ...