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 }

一些简单的Js代码的封装的更多相关文章

  1. angularJS入门小Demo【简单测试js代码的方法】

    1.首先建立一个文件夹 demo, 2.在其中建立一个文本文档,改名为 demo-1.html, 3.把html中要引入的 js 文件拷贝到 demo目录下, 4.然后用 Notepadd++ 编辑刚 ...

  2. 两段简单的JS代码防止SQL注入

    1.URL地址防注入: //过滤URL非法SQL字符var sUrl=location.search.toLowerCase();var sQuery=sUrl.substring(sUrl.inde ...

  3. 简单倒计时js代码

    //倒计时 var timer=null; var interval = 1000; function ShowCountDown(year,month,day,hour,minute,second, ...

  4. 用简单的JS代码制作计算器

    代码+注释一共不到200行,是练习交流的必备良药 主界面如下: 操作示意图: 以下是代码部分 HTML: <div> <table class="window"& ...

  5. 实际项目中积累的一些关于事件的简单应用JS代码段(能力有限,不喜轻喷,23333)

    1:鼠标移入移出显示另一张图片 var yuanquan_1 = document.getElementById("yuanquan_1" );  yuanquan_1. onmo ...

  6. JS代码指导原则

    一.什么是平稳退化? 如果含有JS代码的网页在用户浏览器不支持JS(或者禁用JS)时,用户仍然能够顺利浏览(网站功能正常,只是视觉效果可能差一些),那么这个网页就能够平稳退化 网页能够平稳退化是很必要 ...

  7. js封装的三级联动菜单(使用时只需要一行js代码)

    前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大 ...

  8. JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...

  9. JS代码的简单重构与优化

    JS代码的简单重构与优化(适合新手) 原文  http://www.cnblogs.com/similar/p/5016424.html Demo . 1 //bad if (age > 20) ...

随机推荐

  1. python单元测试框架-unittest(四)之用例综合框架管理

    简述为何如要框架? 前面测试用例与执行都是写在一个文件,当用例数量不断增加的时候,用例的执行与管理变得非常麻烦,因此需要对用例根据具体的功能模块来使用单独的模块来管理.就像一所学校要根据不同年级进行分 ...

  2. (转)总结Linux的chattr与lsattr命令详解

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的li ...

  3. pat1052. Linked List Sorting (25)

    1052. Linked List Sorting (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A ...

  4. python标准输入

    备忘 #! /usr/bin/python2.6 import sys for line in sys.stdin: print line,

  5. C++/CLI中的const literal initonly 友元(转)

    C++/CLI中的const literal initonly 友元 C++/CLI中的const Visual C++并不允许在const对象上调用成员函数,除非该成员函数也被声明为const. C ...

  6. Java入门之Tomcat安装及环境变量配置

    一.Tomcat下载 地址:http://tomcat.apache.org/download-80.cgi#8.0.39 本人用的是Tomcat/8.0.37免安装版,解压到一个目录,本人用的是:D ...

  7. kafka的分区分配策略

    用过 Kafka 的同学应该都知道,每个 Topic 一般会有很多个 partitions.为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会 ...

  8. 在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移

    我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopComm ...

  9. DOM 事件冒泡

    1.什么是事件冒泡? 事件冒泡就是从具体到不具体, 例如:当你给了一个button按钮一个点击事件,再给他的父级相同的事件,就会按照,button,body,document,window,继续向上冒 ...

  10. 转:Oracle优化总结

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案. 关键词 ORACLE数据库 环境 ...