zoukankan      html  css  js  c++  java
  • 一些简单的Js代码的封装

     1 function getById(id) {
     2 
     3 }
     4 
     5 function getAttr(el, k) {
     6 
     7 }
     8 
     9 function setAttr(el, k, v) {
    10 
    11 }
    12 
    13 function addClass(el, k) {
    14 
    15 }
    16 
    17 function removeClass(el, k, v) {
    18 
    19 }
    20 
    21 function getStyle(el, k) {
    22 
    23 }
    24 
    25 function setStyle(el, k, v) {
    26 
    27 }
    28 
    29 function addEvent(el, type, func) {
    30 
    31 }
    32 
    33 function removerEvent(el, type, func) {
    34 
    35 }
    

      封装的实现:

     1 function getById(id) {
     2     return id ? document.getElementById(id) : null;
     3 }
     4 
     5 function getAttr(el, k) {
     6     if (el) {
     7         return el.getAttribute[k];
     8     }
     9     return null;
    10 }
    11 
    12 function setAttr(el, k, v) {
    13     if (el) {
    14         el.setAttribute(k, v);
    15     }
    16 }
    17 
    18 function addClass(el, k) {
    19     if (el) {
    20         var arr = el.className.split(' ');
    21         var arrClass = [];
    22         var isExist = false;
    23         for (var i = 0, len = arr.length; i < len; i++) {
    24             if (arr[i] != '') arrClass.push(arr[i]);
    25             if (arr[i] == k) {
    26                 isExist = true;
    27                 break;
    28             }
    29         }
    30         if (isExist == false) {
    31             arrClass.push(k);
    32             var cls = arrClass.join(' ');
    33             el.className = cls;
    34             setAttr(el, 'class', cls)
    35         }
    36     }
    37 }
    38 
    39 function removeClass(el, k) {
    40     if (el) {
    41         var arr = el.className.split(' ');
    42         var arrClass = [];
    43         for (var i = 0, len = arr.length; i < len; i++) {
    44             if (arr[i] != '' && arr[i] != k) arrClass.push(arr[i]);
    45         }
    46 
    47         var cls = arrClass.join(' ');
    48         el.className = cls;
    49         setAttr(el, 'class', cls)
    50     }
    51 }

    我们看到,firefox可以获取class列表,而ie几个浏览器只有className这一属性,所以操作class时候我们要用到。

    但是获取当前样式却比较麻烦,还需要计算各个样式表的比重,我们这里用不到就暂时忽略了。

    以上简单测试了一番,基本没有问题,我最后加上事件绑定,便暂时告一段落。

     1function addEvent(el, type, func) {
     2     if (el) {
     3         if (el.attachEvent) {
     4             el.attachEvent('on' + type, func);
     5         } else {
     6             el.addEventListener(type , func, false);
     7         }
     8     }
     9 }
    10 
    11 function removerEvent(el, type, func) {
    12     if (el) {
    13         if (el.attachEvent) {
    14             el.detachEvent('on' + type, func);
    15 
    16         } else {
    17             el.removeEventListener(type, func, false);
    18         }
    19     }
    20 }
  • 相关阅读:
    HTML相关
    190. 颠倒二进制位【简单】
    22. 括号生成【中等】
    83. 删除排序链表中的重复元素【简单】
    vuejs2.0声明周期
    js增加8小时
    获取DOM的原生事件对象
    hive创建表失败:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaEx
    安装hive过程填坑小结
    CentOS 7配置网络,静态IP
  • 原文地址:https://www.cnblogs.com/luoyanan/p/5458827.html
Copyright © 2011-2022 走看看