window.onload=function () {
var oDiv=document.getElementsByTagName('div')[0];
var oInP=document.getElementsByTagName('input')[0];
var aDiv=new classList(oDiv);
oInP.onclick=function(){
aDiv.add('ha');
alert(oDiv.className);
}
}
/*
如果e有classList属性则返回它,否则,返回一个为e模拟DOMTOkenList API的对象
返回的对象有contains(),add(),remove(),toggle()和toString()等方法
来检测和修改元素e的类集合,如果classList属性是原生支持的。
返回的类数组对象有length和数组索引属性。模拟DOMTokenList不是类数组对象
但是它有一个toArray()方法来返回一个含元素类名的纯数组快照
*/
function classList(e){
//如果e.classList存在,则返回它
if (e.classList) {return e.classList;}
//否则,就伪造一个
else return new CSSClassList(e);
}
//CSSClassList是一个模拟DOMTOkenList的javascript类
function CSSClassList(e){this.e=e;}
//如果e.className包含类名c则返回true,否则返回false
CSSClassList.prototype.contains=function(){
//检查c是否合格类名,=-1代表找不到
if(c.length==0||c.indexOf(" ")!=-1)
throw new Error("Invalid calss name:"+c+"'");
var classes=this.e.className;
if(!classes) return false;
//e不含类名
if(classes===c)return true;
//e有一个完全匹配的类名
return classes.search("\\b"+ c +"\\b")!=-1;
};
//如果c不存在,将c添加到e.className中
CSSClassList.prototype.add=function(c){
if(this.contains(c)) return;
var classes=this.e.className;
if(classes&&classes[classes.length-1]!=" ")
c=" "+c;
this.e.className+= c;
};
//将在e.className中出现的所有的c删除掉
CSSClassList.prototype.remove=function(c){
if(c.length==0||c.indexOf(" ")!=-1)
throw new Error("Invalid calss name:"+c+"'");
var pattern=new RegExp("\\b"+ c +"\\b\s*","g");
this.e.className=this.e.className.replace(pattern,"");
};
//如果c不存在,将c添加到className中,并返回true;
//否则,将在e.className中出现的所有c都删除,并返回fasle
CSSClassList.prototype.toggle=function(c){
if(this.contains(c)){this.remove(c);return false;}
else{this.add(c);return true;}
};
//返回e.className本身
CSSClassList.prototype.toString=function(){
return this.e.className;
}
//返回在e.className中的类名
CSSClassList.prototype.toArray=function()
{return this.e.className.match(/\b\w+\b/g)||[];};

classLIST元素增删改查方法的更多相关文章

  1. Spring Data CrudRepository增删改查方法(八)

    CrudRepository   的主要方法 long count(); boolean exists(Integer arg0); <S extends StudentPO> S sav ...

  2. Django REST framework 五种增删改查方法

    Django-DRF-视图的演变   版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. 1 from .serializers impor ...

  3. 通用mapper的增删改查方法 留存 备忘

    Mybatis通用Mapper介绍与使用   前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQ ...

  4. 关于单链表的增删改查方法的递归实现(JAVA语言实现)

    因为在学习数据结构,准备把java的集合框架底层源码,好好的过一遍,所以先按照自己的想法把单链表的类给写出来了; 写该类的目的: 1.练习递归 2.为深入理解java集合框架底层源码打好基础 学习的视 ...

  5. js 增删改查方法

    push() 向数组的末尾添加一个或多个元素 pop() 删除数组内部并返回数组的最后一个元素 shift() 把数组内部的第一个元素从其中删除,并返回第一个元素的值 unshift() 向数组外部的 ...

  6. PHP历程(封装的增删改查方法)

    db.class.php   主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER', ...

  7. Hibernate常用增删改查方法

    /** * @param obj * @return * 添加数据 */ public Serializable saveObject(Object obj){ return this.getHibe ...

  8. 连接SQLServer的增删改查方法代码

    在Visual C++中用ADO进行数据库编程 1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序CADOConnection,然后在使用A ...

  9. ArrayList集合的增删改查方法

    新建一个myArrayList项目 在myArrayList项目下创建一个包 包中创建一个ArrayListDemo2.java文件 ArrayListDemo2.java import java.u ...

随机推荐

  1. sdn

    #!/usr/bin/env python #from mininet.cli import CLI #from mininet.link import Link #from mininet.net ...

  2. Metro-Ural119递推

    Time limit: 0.5 second Memory limit: 64 MB Many of SKB Kontur programmers like to get to work by Met ...

  3. HQL查询——HQL查询的基本用法

    HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...

  4. 。U盘安装CentOS6.5

    最近着手自学Linux,网上有很多CentOS的各种版本,但查阅到的教程基本都是关于CentOS6的,本着最新的版本并不一定是最适合的版本的原则,我选择安装CentOS6.5.安装系统稍微不注意就会出 ...

  5. 通过js给android控件WebView设padding

    项目中有个界面是用来显示一个网页的,很简单,放个WebView就ok了,可是返回按钮放在哪 ,ui的设计是在底部显示一个半透明的条,左边有一个返回按钮.这个条显示在内容上面.我有一个担心,就是要是最下 ...

  6. consul模板的说明2

    保证模板的正常执行 使用||true $ consul-template -template "in.ctmpl:out.file:service nginx restart || true ...

  7. 如何为数据源向导填加一种自定义的数据源类型(win示例)

    https://www.devexpress.com/Support/Center/Example/Details/T310160

  8. getElementsByClassName 兼容性

    getElementsByClassName是html5 新增加的一个类名.该方法可以让我们通过class属性中的类名来访问元素.不过该方法比较新,某些DOM树还没有,因此在使用中要当心.由于只有较新 ...

  9. 使用react做的聊天对话列表

    刚刚接触react   可能写的地方有错误或者不完善的地方欢迎大家给指正 下面开始正题 首先分析页面基于react的特性--把页面中所有显示内容看做模块加载 本页面可以看做一个大的模块,我们暂且命名为 ...

  10. PHP中的逻辑运算符的优先级

    在三元运算中(expr1)?(expr2):(expr3); and,or,xor的优先级要小于三元运算符,所以需要添加括号例:如果$a为true,$b为fals,$a and $b?"tr ...