一些简单的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 }
一些简单的Js代码的封装的更多相关文章
- angularJS入门小Demo【简单测试js代码的方法】
1.首先建立一个文件夹 demo, 2.在其中建立一个文本文档,改名为 demo-1.html, 3.把html中要引入的 js 文件拷贝到 demo目录下, 4.然后用 Notepadd++ 编辑刚 ...
- 两段简单的JS代码防止SQL注入
1.URL地址防注入: //过滤URL非法SQL字符var sUrl=location.search.toLowerCase();var sQuery=sUrl.substring(sUrl.inde ...
- 简单倒计时js代码
//倒计时 var timer=null; var interval = 1000; function ShowCountDown(year,month,day,hour,minute,second, ...
- 用简单的JS代码制作计算器
代码+注释一共不到200行,是练习交流的必备良药 主界面如下: 操作示意图: 以下是代码部分 HTML: <div> <table class="window"& ...
- 实际项目中积累的一些关于事件的简单应用JS代码段(能力有限,不喜轻喷,23333)
1:鼠标移入移出显示另一张图片 var yuanquan_1 = document.getElementById("yuanquan_1" ); yuanquan_1. onmo ...
- JS代码指导原则
一.什么是平稳退化? 如果含有JS代码的网页在用户浏览器不支持JS(或者禁用JS)时,用户仍然能够顺利浏览(网站功能正常,只是视觉效果可能差一些),那么这个网页就能够平稳退化 网页能够平稳退化是很必要 ...
- js封装的三级联动菜单(使用时只需要一行js代码)
前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大 ...
- JS类的封装及实现代码
js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...
- JS代码的简单重构与优化
JS代码的简单重构与优化(适合新手) 原文 http://www.cnblogs.com/similar/p/5016424.html Demo . 1 //bad if (age > 20) ...
随机推荐
- 运行结果:Spring Bean的生命周期
详见:http://www.cnblogs.com/zrtqsk/p/3735273.html https://blog.csdn.net/qq_23473123/article/details/76 ...
- 获取项目路径js
var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: myproj/view/my.jsp ...
- Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象
FindObjectOfType<>() 是按类型查找游戏对象.<>里面填写类型,那要是有多个这种类型的呢?来试一下. 1. 新建一个场景,新建一个Test.cs脚本,内容 ...
- Murano Weekly Meeting 2016.07.26
Meeting time: 2016.July.26 1:00~2:00 Chairperson: Nikolay_St, from Mirantis Meeting summary: 1.Masc ...
- (转)Python字典实现三级菜单
Python字典实现三级菜单 原文:https://www.cnblogs.com/pyramid1001/p/5803294.html 1 ############################# ...
- HDU5411——CRB and Puzzle——————【矩阵快速幂优化dp】
CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 表单(form)成为 ajax 提交的表单(form)
1.form <form id="ff" method="post"> <div> <label for="name&q ...
- jdk安装完为什么会有两个JRE?
jdk安装完为什么会有两个JRE? 之所以需要两套 jre ,是因为可以分担工作:当用户只需要执行 java 的程序时,那么 c:\program files\java\jre 下的 jre 就 ok ...
- <jsp:javabean>动作标签实例
<jsp:javabean>动作标签实例 之后补齐基础知识 scope属性 该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.<jsp:useBean>标识 ...
- (生产)jsonp - 跨域请求
参考:https://github.com/webmodules/jsonp 参数: url (String) url to fetch opts (Object), optional param ( ...