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. HTML空格标签

    双学位论文+本学位开题报告+实训项目+实训考试+学员考试,真是脑子都要爆炸... 话不多说,留个小知识点,HTML的空格替代符号表示法: 1. 半个空白,1个字符宽度:  或者   2.1个空白,2个 ...

  2. 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉

    0.SDK之必备的基本素质 在项目中免不了要用到各种各样的第三方的sdk,在我现在的工作中就在公司内部积累了各种各样的的公共库(基于.net的,基于silverlight的等等),托管到了内部的nug ...

  3. [LeetCode_2] Add Two Numbers

    LeetCode: 2. Add Two Numbers /** * Definition for singly-linked list. * struct ListNode { * int val; ...

  4. LoadRunner使用之变量参数化

    LR性能测试之参数化设置 Q:何为参数化? LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如 ...

  5. Java Programming Language Enhancements

    引用:Java Programming Language Enhancements Java Programming Language Enhancements Enhancements in Jav ...

  6. spring-listener&spring-task注解版本

    1.spring-listener: a) import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextLi ...

  7. 小识Tableau

    关于 Tableau Tableau 帮助人们将数据转化为可以付诸行动的见解.探索无所不能的可视化分析.只需点击几下即可构建仪表板,进行即兴分析. Tableau与R对比: 1.从开发的角度讲,Tab ...

  8. 今天学的是 HTML基本元素、基本语法元素特点等,就发图片吧。

    现在我们新手用的软件是:Adobe Dreamweaver CS6 按照下面格式来改,以后点HTML5直接就改过来了. 可以敲敲这些代码,大家一起学习. <!doctype html>&l ...

  9. d3.js读书笔记-2

    比例尺 比例尺基本内容 比例尺是一组把输入域映射为输出范围的函数.任意数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射为可视化图形中使用的新值的便捷手段.D3的比例尺就是那 ...

  10. C#自定义大小与改变大下的方法

    在用VS的窗体设计器时,我们可以发现控件都是可以拖动的,并且还可以调整大小.怎么在自己的程序中可以使用上述功能呢? 下面的方法值得借鉴! using System; using System.Wind ...