zoukankan      html  css  js  c++  java
  • 添加和移除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

  • 相关阅读:
    Android中获取网络图片的三种方法
    关于android性能,内存优化
    web端调用Android端方法的过程
    [程序猿感悟] [悟] 两篇不错的文章 (转载自 stay4it )
    ListView 中使用onItemClick和onItemLongClick的常见问题
    TextView 在java中使用Html设置字体大小颜色
    Android-手机端开发用界面原型与布局工具
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Service完全解析,关于服务你所需知道的一切(上)
    (转 todo阅读)Android 官方博客
  • 原文地址:https://www.cnblogs.com/mulianju/p/4128681.html
Copyright © 2011-2022 走看看