JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())
var box = document.getElementById("box");
box.id = "pox";
将id = “box”,改为id = “pox”;
但id = “box”依然存在,这样就不符合W3C标准。不建议使用。
box.className = "box5"; 将会把原来的className 清除只有一个类名为box5的类。

如果想有用className避免这种缺陷,可以写成 box.className ="box5 box6 ....",但是这种方法太过麻烦,会造成冗余,因此可以用下面的方法:
原生的js中并没有添加/删除类这些属性或方法,为了实现这一功能,因此写出了一下两个函数:
1.js原生的addClass()
首先判断是否有要添加的类名:
function hasClass(element, cName){
return !!element.className.match(new RegExp('(\\s|^)' + cName + '(\\s|$)'));
}
判断后,如果没有则添加
function addClass(element, cName){
if (!hasClass(element, cName)) {
return element.className += " " + cName;
};
}
addClass(box,"box6");
addClass(box,"box7");

此时的addClass()添加的类并不会覆盖掉原来的类,减少了冗余。
2.从多个类中删除一个元素 removeClass,其余类保留:
function removeClass(element,cName){
if (hasClass(element,cName)) {
element.className = element.className.replace(new RegExp('(\\s|^)' + cName + '(\\s|$)'), " ");
};
}
removeClass(box,"box6"); //test,box,box7

JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())的更多相关文章
- JS:操作样式表3:内联和外链样式
var box = document.getElementById("box"); box.style.属性;只能读取修改行内样式. //访问元素样式2,对外链样式表进行操作 do ...
- JS:操作样式表1:行内样式
//访问元素样式1, stye属性只对行内样式有用 var box = document.getElementById("box"); // alert(box.style.col ...
- [荐]使用Js操作注册表
使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...
- JS 操作样式 style
1. 任何支持 style 特性的 HTML 元素在 JavaScript 中都对应着有一个 style 属性,指向一个 CSSStyleDeclaration 的一个实例对象,包含该元素的内嵌sty ...
- Javascript高级编程学习笔记(51)—— DOM2和DOM3(3)操作样式表
操作样式表 在JS中样式表用一种类型来表示,以便我们在JS对其进行操作 这一类型就是CSSStyleSheet 即CSS样式表类型,包括了之前 style 对象所不包括的外部样式表以及嵌入样式表 其中 ...
- DOM操作样式表及其兼容性
DOM操作样式表的时候,存在很多浏览器兼容上的问题,测试的时候用的是Firefox 28.0.IE11.IE8.Chrome.测试的时候发现,不兼容问题基本上都是IE8和非IE浏览器之家的问题,很多I ...
- JavaScript编程:使用DOM操作样式表
6.使用DOM操作样式表: 操纵元素的Style样式属性: background-color:style.backgroundColor color:style.col ...
- js进阶 9-11 select选项框如何动态添加和删除元素
js进阶 9-11 select选项框如何动态添加和删除元素 一.总结 一句话总结: 二.js进阶 9-11 select选项框如何动态添加和删除元素 1.案例说明 2.相关知识 Select 下拉列 ...
- js修改样式表规则
<div>adasfsfs</div> <div id="div">adasfsfs</div> <div>adasfs ...
随机推荐
- javascript 面向对象编程小记
虽然平常用jquery用的很熟,但是基本都是面向过程的写法.一个事件一个function,很少有面向对象的写法.今天得写一个日期控件,不得不用上面向对象编程. 刚开始我的想法是: var datepi ...
- 在python多进程中使用manager和Barrier
注意:Barrier是PYTHON3才有的功能,在2中无法测试. #!/usr/bin/env python # -*- coding: utf-8 -*- import multiprocessin ...
- 如何知道SQL语句的性能和改进途径
用EXPLAIN吧... EXPLAIN , , , ) \G;
- ytu 1067: 顺序排号(约瑟夫环)
1067: 顺序排号 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 31 Solved: 16[Submit][Status][Web Board] ...
- Win7下用IIS发布网站
安装IIS控制面板->程序->程序和功能, 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧,虽然有些不是必须的,多勾无碍. 进入IIS管理器控制面板-> 系统和安全-&g ...
- 以管理身份运行cmd
搜索出cmd程序,然后右键-以管理员身份运行
- 【MongoDB】1.安装--以及简单使用
第一次接触MongoDB 参考&粘贴:http://jingyan.baidu.com/article/ed15cb1b52b8661be2698162.html 一.安装 1.首先去官 ...
- 自定义adapter实现listview双列显示
package com.appshare; import java.util.ArrayList;import java.util.List; import android.content.Conte ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- poj 1273 最大流
题目链接:http://poj.org/problem?id=1273 a.EK算法:(Edmond-Karp): 用BFS不断找增广路径,当找不到增广路径时当前流量即为最大流. b.dinic算法: ...