添加和移除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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM