这几天做的这个小项目,要求不能引用jQuery,全部用原生的javascript来写,突然发现都不知道改怎么写了。写了jQuery,把原生的都快忘记完了。把写出了的公用函数留下了,以后可能用得到。
1 /**
2 *@获取元素
3 *@o-"#id"-根据id获取元素
4 *@o-"#class"-根据class获取元素
5 *@o-"#tagName"-根据元素名称获取元素
6 */
7 function $E(o){
8 var regId =/^#/,regClass = /^./,keyword = "";
9 if(regId.test(o)){
10 keyword = o.replace("#","");
11 return document.getElementById(keyword) || null;
12 }
13 if(regClass.test(o)){
14 keyword = o.replace(".","");
15 return document.getElementsByClassName(keyword) || null;
16 }
17
18 return document.getElementsByTagName(o) || null;
19 }
20 /**
21 *@扩展字符串去除空格
22 */
23 String.prototype.trim =function(){
24 return this.replace(/(^\s*)|(\s*$E)/g,'');
25 };
26
27 /***
28 *常用工具函数
29 */
30 var Utils = {
31 hasClass: function(element,classname){
32 var reg = new RegExp('(\\s|^)'+classname+'(\\s|$)');
33 return element.className.match(reg);
34 },
35
36 addClass:function(element,classname){
37 if(!this.hasClass(element,classname)){
38 element.className += "" +classname;
39 }
40 },
41
42 removeClass:function(element,classname){
43 if(this.hasClass(element,classname)){
44 var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
45 element.className = element.className.replace(reg,' ');
46 }
47 },
48
49 show:function(element){
50 element.style.display = "block";
51 },
52
53 hide: function(element){
54 element.style.display = "none";
55 },
56
57 //获取cookie解码后的值
58 getCookieVal: function(offset){
59 var endstr = document.cookie.indexOf (";", offset);
60 if (endstr == -1) {endstr = document.cookie.length;}
61 return unescape(document.cookie.substring(offset, endstr));
62 },
63
64 //获取cookie原始值
65 getCookie: function(name){
66 var arg = name + "=";
67 var alen = arg.length;
68 var clen = document.cookie.length;
69 var i = 0;
70 while (i < clen)
71 {
72 var j = i + alen;
73 if (document.cookie.substring(i, j) == arg)
74 return this.getCookieVal(j);
75 i = document.cookie.indexOf(" ", i) + 1;
76 if (i == 0) break;
77 }
78 return null;
79 },
80
81 //设置cookie
82 setCookie: function(sName, sValue,days,sDomain){
83 var expires = new Date();
84 expires.setTime(expires.getTime() + parseInt(days)*24*60*60*1000);
85 document.cookie = sName + "=" + escape(sValue) + ";expires="+expires.toGMTString()+" ;path=/; domain=" + sDomain;
86 },
87 //字符串转码-提交给后端的数据
88 enCodeXML: function(text){
89 return text.toString().replace(/&/g, "&")
90 .replace(/</g, "<")
91 .replace(/>/g, ">")
92 .replace(/"/g, """)
93 .replace(/'/g, "'");
94
95 },
96 deCodeXML: function(text){
97 },
98 //页面展示数据
99 htmlEncode: function(str){
100 if (typeof str == "undefined") return "";
101 str = str.replace(/&/g, "&");
102 str = str.replace(/</g, "<");
103 str = str.replace(/>/g, ">");
104 str = str.replace(/\"/g, """);
105 //str = str.replace(/\'/g, "'"); //IE不支持apos
106 str = str.replace(/ /g, " ");
107 str = str.replace(/&#([^\;]+);/ig, "&#$1;"); //将井转成相应的汉字“井”
108 return str;
109
110 },
111 htmlDecode:function (str){
112 if (typeof str == "undefined") return "";
113 str = str.replace(/</g, "<");
114 str = str.replace(/>/g, ">");
115 str = str.replace(/"/g, "\"");
116 str = str.replace(/'/g, "'");
117 str = str.replace(/ /g, " ");
118 str = str.replace(/&/g, "&");
119 return str;
120 }
121
122 };
123
124 function Ajax(url, args) {
125 this.url = url || "";
126 this.params = args.parameters || "";
127 this.mime = args.mime || "text/html";
128 this.onComplete = args.onComplete || this.defaultOnCompleteFunc;
129 this.onLoading= args.onLoading || this.defaultOnLoadingFunc;
130 this.onError = args.onError || this.defaultOnErrorFunc;
131 this.method = args.method || "post";
132 if (typeof(args.sync) == "undefined" || args.sync == null) {
133 this.sync = true;
134 } else {
135 this.sync = args.sync ? true : false;
136 }
137 }
138
139 Ajax.prototype = {
140 READY_STATE_COMPLETE : 4,
141 getRequest : function () {
142 var funcs = [
143 function() {return new ActiveXObject('Msxml2.XMLHTTP')},
144 function() {return new ActiveXObject('Microsoft.XMLHTTP')},
145 function() {return new XMLHttpRequest()}
146 ];
147
148 var req = null;
149 for (var i = 0; i < funcs.length; i++) {
150 var f = funcs[i];
151 try {
152 req = f();
153 break;
154 } catch (e) {}
155 }
156
157 return req || false;
158 },
159
160 parseParams : function () {
161 if (typeof (this.params) == "string") {
162 return this.params;
163 } else {
164 var s = "";
165 for (var k in this.params) {
166 s += k + "=" + this.params[k] + "&";
167 }
168 return s;
169 }
170 },
171
172 loadData : function () {
173 this.req = this.getRequest();
174
175 if (this.req) {
176 this.onLoading();
177 try {
178 var loader = this;
179 this.req.onreadystatechange = function () {
180 if (loader.req.readyState == loader.READY_STATE_COMPLETE) {
181 loader.onComplete.call(loader, loader.req);
182 }
183 }
184 this.req.open(this.method, this.url, this.sync);
185
186 if (this.method == "post") {
187 this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
188 }
189
190 if (this.req.overrideMimeType) {
191 this.req.overrideMimeType(this.mime);
192 }
193 this.req.send(this.method == "post" ? this.parseParams(this.params) : null);
194 } catch (e) {
195 this.onError.call(this, e);
196 }
197 }
198 },
199
200 defaultOnCompleteFunc : function () {
201 alert(this.req.responseText);
202 },
203
204 defaultOnLoadingFunc : function () {
205 },
206
207 defaultOnErrorFunc : function (error) {
208 }
209
后续在慢慢补充..
1 事件监听 2 function addListener(element,e,fn){ 3 element.addEventListener ? element.addEventListener(e,fn,false) : element.attachEvent("on" + e,fn); 4 }