添加和移除Class,addClass/removeClass的简单实现

本方法是通过数组和字符串的方法实现,尚不能满足实际应用,仅供学习~~~

本方法的特点:

  • 支持无class节点的class添加
  • 支持已经具有单个或多个class的节点添加
  • 屏蔽已经具有想同className的节点添加重复的class
  • 暂时不支持一次性添加多个class
  • 移除class支持单个class的节点移除
  • 移除class支持多个class的节点移除单个class
  • 暂时不能“完美”支持一次性移除多个class

以下是源码:

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title>addClass</title>
 6     <script>
 7         window.onload = function () {
 8
 9
10             function addClass(obj, className) {
11                 if (obj.className === ‘‘) {
12                     obj.className = className;
13                 } else {
14                     //如果要添加的class在原有的class中不存在
15                     var arrClassName = obj.className.split(‘ ‘);
16                     if (arrIndexOf(arrClassName, className) === -1) {
17                         obj.className += ‘ ‘ + className;
18                     }
19                     //如果要添加的class在原有的class中存在,则不操作
20
21                 }
22             }
23
24             function removeClass(obj, className) {
25                 //先判断obj是不是有className
26                 if (obj.className != ‘‘) {
27                     var arrClassName = obj.className.split(‘ ‘);
28                     var classIndex = arrIndexOf(arrClassName, className);
29                     if (classIndex!==-1) {
30                         arrClassName.splice(classIndex, 1);
31                         obj.className = arrClassName.join(‘ ‘);
32                     }
33                 }
34             }
35
36             function arrIndexOf(arr, v) {
37                 for (var i = 0; i < arr.length; i++) {
38                     if (arr[i] == v) {
39                         return i;
40                     }
41                 }
42                 return -1;
43             }
44
45             function outPutClassName(infoCon,info) {
46                 infoCon.innerHTML = info;
47             }
48
49             var oDiv = document.getElementById(‘div1‘);
50             var mText = document.getElementById(‘text1‘);
51             var mBtn1 = document.getElementById(‘btn1‘);
52             var mBtn2 = document.getElementById(‘btn2‘);
53
54             mBtn1.onclick = function() {
55                 addClass(oDiv, mText.value);
56                 outPutClassName(oDiv, oDiv.className);
57             };
58             mBtn2.onclick = function () {
59                 removeClass(oDiv, mText.value);
60                 outPutClassName(oDiv, oDiv.className);
61             };
62         }
63     </script>
64 </head>
65     <body>
66         <input id="text1" type="text" value="newClass"/><input id="btn1" value="Add class" type="button"/><input id="btn2" value="RemoveClass" type="button"/>
67         <p>目标元素的className:(暂时不支持单次添加多个className)</p>
68         <div id="div1"></div>
69
70
71     </body>
72 </html>

原创文章,转载请标明出处:http://www.eyezip.com/?p=992

时间: 2024-11-08 22:07:15

添加和移除Class,addClass/removeClass的简单实现的相关文章

原生JavaScript实现的addclass,removeclass,hasclass,toggleclass,getbyclass

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>addclass,removeclass,hasclass,toggleclass,getbyclass</title> </head> <body> <div class="div1" id="b

.addClass(),.removeClass(),.toggleClass()的区别

.addClass("className")方法是用来给指定元素增加类名,也就是说给指定的元素追加样式: 可以同时添加多个类名,空格符隔开 $("selector").addClass("className1 className2"); .removeClass("className")方法是用来给指定的元素移除类名,也就是说给指定元素移除样式: 可以同时移除多个类名,空格符隔开 $("selector")

jQuery addClass removeClass toggleClass方法概述

通过动态改变类名(class),可以让其修改元素呈现出不同的效果.在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,DOM元素响应的className属性获取的不是class名称的数组,而是一个含有空格的字符串,这就使得多class操作变得很麻烦.同样的jQuery开发者也考虑到这种情况,增加了一个.addClass()方法,用于动态增加class类名 .addClass( className )方法 .addClass( className ) :

jQuery的addClass,removeClass和toggleClass方法

jQuery的addClass,removeClass和toggleClass方法,最后一个方法在某一情形之下,可以替代前面2个方法. 第一个方法addClass为元素添加一个class. 第二个方法removeClass,移除一个class. 第三个方法toggleClass是互斥class. <input id="Text1" type="text" /> 创建样式,当文本框focus时,文本框边框高亮和变宽,当blur时,恢复原来样式. .text

jQuery添加/改变/移除CSS类

转自:http://www.jbxue.com/article/24589.html 在jquery中用到removeClass移除CSS类.addClass添加CSS类.toggleClass添加或者移除CSS类,hasClass判断是否已经存在CSS.改变页面元素样式使用Javascript也可实现,但有没有更简洁的办法,答案是肯定的,现在有了jQuery,似乎让Js代码瘦身了不少,应验了那句话:“jQuery让JavaScript代码变得简洁!”,言归正传,来看jquery如何添加.移除C

jQuery中添加/改变/移除改变CSS样式例子

在jquery中对于div样式操作我们会使用到CSS() removeClass() addClass()方法来操作了,下面我们就整理了几个例子大家一起来看看吧. CSS()方法改变CSS样式 css()方法在使用上具有多样性.其中有一种可接受两个输入参数:样式属性和样式值,两者之间用逗号分隔.比如要改变链接颜色,可以这样编写代码:  代码如下 复制代码 $("#61dh a").css('color','#123456');//选择器‘$("#61dh a")’表

JQuery属性操作 addclass removeclass hasclass toggleClass()

参考页面: http://www.w3school.com.cn/jquery/jquery_ref_attributes.asp 1:addClass() romoveclass():向匹配的元素添加指定的类名 一个或多个,致死天际一个或多个class属性:(如果添加多个类,可以使用空格分隔类名) A:想第一个p元素添加一个类:              $("p:first").addClass("intro"); B: 使用函数添加一个类 <script

jQuery学习笔记 .addClass()/.removeClass()简单学习

使用jQuery或javaScript来动态改变页面中某个或部分元素的样式,为了实现这样的功能,我们往往都是使用jQuery或javaScript来控制HTML中DOM的类名(class)从而实现增加或删除某一样式 在jQuery中提供了三种方法来实现这样的效果:.addClass()方法,.removeClass()方法 .addClass()方法 主要用于在jQuery中来添加一个或多个类名来渲染页面 添加多个类名时,他们之间需要用空格隔开 我们还可以使用函数的方法来给指定的元素添加类名:

DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。

DOM操作 --如何添加.移除.移动.复制.创建和查找节点等. (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 (2)添加.移除.替换.插入 (1)创建新节点 createDocumentFragment()    //创建一个DOM片段 createElement()   //创建一个具体的元素 createTextNode()   //创