我自己的Javascript 库,封装了一些常用函数 Kingwell.js

简介: 我自己的Javascript 库,封装了一些常用函数 Kingwell.js 博客分类:   Javascript javascript 库javascript库  现在Javascript库海量,流行的也多,比如jQuery,YUI等,虽然功能强大,但也是不万能的,功能不可能涉及方方面面,自己写一个的JS库是对这些的补充,很多也比较实用,把应用到项目中中去也比较方面,这也是对工作的一些积累,也加深对知识的理解。

现在Javascript库海量,流行的也多,比如jQuery,YUI等,虽然功能强大,但也是不万能的,功能不可能涉及方方面面,自己写一个的JS库是对这些的补充,很多也比较实用,把应用到项目中中去也比较方面,这也是对工作的一些积累,也加深对知识的理解。

2012-6-20更新,添加设置Cookie,获取Cookie,删除Cookie方法。很实用哦.......................

2012-7-22更新,表格排序,获取URL参数,批量清除Cookie...

2012-8-24更新,动态加载JS,Ajax封装,HTML编码...

 

Js代码   收藏代码
  1. /* 
  2.  * Name    : Kingwell JavaScript Library v1.5 
  3.  * Author  : Kingwell Leng 
  4.  * E-mial  : jinhua.leng ### gamil.com 
  5.  * Blog    : http://www.cnblogs.com/kingwell/ http://kingwell-leng.iteye.com/admin 
  6.  * Date    : 2013-4-31 15:07 
  7.  */  
  8. (function (w, d) {  
  9.     if (!window.KW) {  
  10.         window.KW = {};  
  11.     }  
  12.     var location = window.location,  
  13.     de = d.documentElement,  
  14.     userAgent = navigator.userAgent.toLowerCase(),  
  15.     ie6 = /msie 6.0/.test(userAgent),  
  16.     opera = /opera/.test(userAgent),  
  17.     ie = /msie/.test(userAgent) && !opera,  
  18.     safari = /webkit/.test(userAgent),  
  19.     ff = /firefox/.test(userAgent);  
  20.     var tip = {  
  21.         require : '缺少参数,参数必须的',  
  22.         rule : '参数不合法'  
  23.     };  
  24.     KW = {  
  25.         name : 'Kingwell Javascript Library',  
  26.         version : '1.5',  
  27.         debug : true,  
  28.         namespace : function (name) {  
  29.             var parts = name.split('.');  
  30.             var current = KW;  
  31.             for (var i in parts) {  
  32.                 if (!current[parts[i]]) {  
  33.                     current[parts[i]] = {};  
  34.                 }  
  35.                 current = current[parts[i]];  
  36.             }  
  37.         },  
  38.         Dom : {  
  39.             $ : function (id) {  
  40.                 return typeof id === 'string' ? d.getElementById(id) : id;  
  41.             },  
  42.             remove : function (o) {  
  43.                 var obj = this.$(o);  
  44.                 if (!obj) {  
  45.                     return;  
  46.                 }  
  47.                 return obj.parentNode.removeChild(obj);  
  48.             },  
  49.             setOpacity : function (obj, val) {  
  50.                 var vals = (typeof obj === "number" && val <= 100 && val >= 0) ? val : 100;  
  51.                 if (!obj) {  
  52.                     return;  
  53.                 }  
  54.                 if (ie) {  
  55.                     obj.style.filter = 'alpha(opacity=' + vals + ')';  
  56.                 } else {  
  57.                     obj.style.opacity = vals / 100;  
  58.                 }  
  59.             },  
  60.             getMaxZindex : function (o) {  
  61.                 var maxZindex = 0;  
  62.                 var obj = o ? o : '*';  
  63.                 var divs = d.getElementsByTagName(obj);  
  64.                 for (z = 0; z < divs.length; z++) {  
  65.                     maxZindex = Math.max(maxZindex, divs[z].style.zIndex);  
  66.                 }  
  67.                 return maxZindex;  
  68.             },  
  69.             createElement : function (type, prop) {  
  70.                 var tmp = d.createElement(type);  
  71.                 for (var i in prop) {  
  72.                     tmp.setAttribute(i, prop[i]);  
  73.                 }  
  74.                 return tmp;  
  75.             },  
  76.             createTextNode : function (txt) {  
  77.                 return d.createTextNode(txt);  
  78.             },  
  79.             hasAttr : function (obj, attr) {  
  80.                 obj.getAttribute(attr);  
  81.                 return obj;  
  82.             },  
  83.             setAttr : function (obj, attr) {  
  84.                 var self = this;  
  85.                 for (var i in attr) {  
  86.                     if (i === 'class') {  
  87.                         self.addClass(obj, attr[i]);  
  88.                     } else {  
  89.                         obj.setAttribute(i, attr[i]);  
  90.                     }  
  91.                 }  
  92.                 return obj;  
  93.             },  
  94.             removeAttr : function (obj, attr) {  
  95.                 obj.removeAttribute(attr);  
  96.                 return obj;  
  97.             },  
  98.             getClass : function (c, pd) {  
  99.                 var all = pd ? d.getElementsByName(pd).getElementsByTagName("*") : d.getElementsByTagName("*"),  
  100.                 str = "",  
  101.                 n = [];  
  102.                 for (var i = 0; i < all.length; i++) {  
  103.                     if (KW.Dom.hasClass(all[i], c)) {  
  104.                         n.push(all[i]);  
  105.                     }  
  106.                 }  
  107.                 return n;  
  108.             },  
  109.             addClass : function (o, str) {  
  110.                 var obj = this.$(o);  
  111.                 if (!obj) {  
  112.                     return;  
  113.                 }  
  114.                 var className = obj.className;  
  115.                 var reg = eval("/^" + str + "$ | " + str + "$|^" + str + " | " + str + " /");  
  116.                 if (reg.test(className)) {  
  117.                     return;  
  118.                 }  
  119.                 if (className !== '') {  
  120.                     obj.className = className + " " + str;  
  121.                 } else {  
  122.                     obj.className = str;  
  123.                 }  
  124.             },  
  125.             removeClass : function (o, str) {  
  126.                 var obj = this.$(o);  
  127.                 if (!obj) {  
  128.                     return;  
  129.                 }  
  130.                 var className = obj.className;  
  131.                 if (this.isNull(className)) {  
  132.                     var reg = new RegExp(str, "g");  
  133.                     var n = className.replace(reg, "");  
  134.                     obj.className = n;  
  135.                 }  
  136.             },  
  137.             hasClass : function (o, str) {  
  138.                 if (!o) {  
  139.                     return;  
  140.                 }  
  141.                 var obj = this.$(o);  
  142.                 var className = obj.className;  
  143.                 var reg = eval("/^" + str + "$| " + str + "$|^" + str + " | " + str + " /");  
  144.                 if (reg.test(className)) {  
  145.                     return true;  
  146.                 } else {  
  147.                     return false;  
  148.                 }  
  149.             },  
  150.             html : function (obj, html) {  
  151.                 if (html) {  
  152.                     obj.innerHTML = html;  
  153.                 } else {  
  154.                     return obj.innerHTML;  
  155.                 }  
  156.             },  
  157.             text : function (obj, text) {  
  158.                 if (text) {  
  159.                     if (document.textContent) {  
  160.                         obj.textContent = text;  
  161.                     } else {  
  162.                         obj.innerText = text;  
  163.                     }  
  164.                 } else {  
  165.                     if (document.textConten) {  
  166.                         return obj.textContent;  
  167.                     } else {  
  168.                         return obj.innerText;  
  169.                     }  
  170.                 }  
  171.             }  
  172.         },  
  173.         Events : {  
  174.             addEvent : function (oTarget, oType, fnHandler) {  
  175.                 var self = this;  
  176.                 if (oTarget.addEventListener) {  
  177.                     oTarget.addEventListener(oType, fnHandler, false);  
  178.                 } else if (oTarget.attachEvent) {  
  179.                     oTarget.attachEvent('on' + oType, fnHandler);  
  180.                 } else {  
  181.                     oTarget['on' + oType] = fnHandler;  
  182.                 }  
  183.             },  
  184.             removeEvent : function (oTarget, oType, fnHandler) {  
  185.                 var self = this;  
  186.                 if (oTarget.removeEventListener) {  
  187.                     oTarget.removeEventListener(oType, fnHandler, false);  
  188.                 } else if (oTarget.detachEvent) {  
  189.                     oTarget.detachEvent('on' + oType, fnHandler);  
  190.                 } else {  
  191.                     oTarget['on' + oType] = null;  
  192.                 }  
  193.             },  
  194.             getEvent : function (ev) {  
  195.                 return ev || window.event;  
  196.             },  
  197.             getTarget : function (ev) {  
  198.                 return this.getEvent(ev).target || this.getEvent().srcElement;  
  199.             },  
  200.             stopPropagation : function () {  
  201.                 if (window.event) {  
  202.                     return this.getEvent().cancelBubble = true;  
  203.                 } else {  
  204.                     return arguments.callee.caller.arguments[0].stopPropagation();  
  205.                 }  
  206.             },  
  207.             stopDefault : function () {  
  208.                 if (window.event) {  
  209.                     return this.getEvent().returnValue = false;  
  210.                 } else {  
  211.                     return arguments.callee.caller.arguments[0].preventDefault();  
  212.                 }  
  213.             }  
  214.         },  
  215.         Ready : function (loadEvent) {  
  216.             if (!loadEvent) {  
  217.                 return;  
  218.             }  
  219.             var init = function () {  
  220.                 if (arguments.callee.done) {  
  221.                     return;  
  222.                 } else {  
  223.                     arguments.callee.done = true;  
  224.                 }  
  225.                 loadEvent.apply(d, arguments);  
  226.             };  
  227.             if (d.addEventListener) {  
  228.                 d.addEventListener("DOMContentLoaded", init, false);  
  229.                 return;  
  230.             }  
  231.             if (safari) {  
  232.                 var _timer = setInterval(function () {  
  233.                         if (/loaded|complete/.test(d.readyState)) {  
  234.                             clearInterval(_timer);  
  235.                             init();  
  236.                         }  
  237.                     }, 10);  
  238.             }  
  239.             d.write('<script id="_ie_onload" defer src="javascript:void(0)"><\/script>');  
  240.             var script = d.getElementById('_ie_onload');  
  241.             script.onreadystatechange = function () {  
  242.                 if (this.readyState == 'complete') {  
  243.                     init();  
  244.                 }  
  245.             };  
  246.             return true;  
  247.         },  
  248.         Storage : {  
  249.             setItem : function (strName, strValue) {  
  250.                 if (Storage) {}  
  251.                 else if (Storage) {}  
  252.                 else {}  
  253.   
  254.             },  
  255.             getItem : function (strValue) {},  
  256.             removeItem : function (strValue) {},  
  257.             removeAll : function () {}  
  258.   
  259.         },  
  260.         getScript : function (obj, callback, order) {  
  261.             var self = this,  
  262.             arr = obj,  
  263.             timeout,  
  264.             ord = order || true,  
  265.             num = 0,  
  266.             str = typeof obj === 'string';  
  267.             if (!arr) {  
  268.                 this.Error(tip.require);  
  269.                 return;  
  270.             }  
  271.             function add() {  
  272.                 if (arr[0] === undefined) {  
  273.                     return;  
  274.                 }  
  275.                 var script = KW.Dom.createElement("script", {  
  276.                         'src' : (str ? obj : arr[num]),  
  277.                         'type' : 'text/javascript'  
  278.                     }),  
  279.                 header = d.getElementsByTagName("head")[0];  
  280.                 if (str) {  
  281.                     if (script.readyState) {  
  282.                         script.onreadystatechange = function () {  
  283.                             if (script.readyState === 'loaded' || script.readyState === 'complete') {  
  284.                                 script.onreadystatechange = null;  
  285.                                 callback && callback();  
  286.                             }  
  287.                         };  
  288.                     } else {  
  289.                         script.onload = function () {  
  290.                             callback && callback();  
  291.                         };  
  292.                     }  
  293.                 } else {  
  294.                     if (arr.length >= 1) {  
  295.                         if (script.readyState) {  
  296.                             script.onreadystatechange = function () {  
  297.                                 if (script.readyState === 'loaded' || script.readyState === 'complete') {  
  298.                                     script.onreadystatechange = null;  
  299.                                     arr.shift();  
  300.                                     timeout = setTimeout(add, 1);  
  301.                                 }  
  302.                             };  
  303.                         } else {  
  304.                             script.onload = function () {  
  305.                                 arr.shift();  
  306.                                 timeout = setTimeout(add, 1);  
  307.                             };  
  308.                         }  
  309.                     } else {  
  310.                         clearTimeout(timeout);  
  311.                         callback && callback();  
  312.                     }  
  313.                 }  
  314.                 header.appendChild(script);  
  315.             }  
  316.             add();  
  317.         },  
  318.         Ajax : function (obj) {  
  319.             if (!obj.url) {  
  320.                 return false;  
  321.             }  
  322.             var method = obj.type || "GET";  
  323.             var async = obj.async || true;  
  324.             var dataType = obj.dataType;  
  325.             var XHR = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
  326.             XHR.open(method, obj.url, async);  
  327.             XHR.setRequestHeader('If-Modified-Since', 'Thu, 06 Apr 2006 00:00: 00 GMT');  
  328.             XHR.send(null);  
  329.             if (obj.sendBefore) {  
  330.                 obj.sendBefore();  
  331.             }  
  332.             XHR.onreadystatechange = function () {  
  333.                 if (XHR.readyState == 4 && (XHR.status >= 200 && XHR.status < 300 || XHR.status == 304)) {  
  334.                     if (obj.success) {  
  335.                         if (dataType && dataType.toLocaleLowerCase() === "json") {  
  336.                             obj.success.call(XHR, eval("(" + XHR.responseText + ")"));  
  337.                         } else if (dataType && dataType.toLocaleLowerCase() === "xml") {  
  338.                             obj.success.call(XHR, XHR.responseXML);  
  339.                         } else {  
  340.                             obj.success.call(XHR, XHR.responseText);  
  341.                         }  
  342.                     }  
  343.                     if (obj.complete) {  
  344.                         obj.complete();  
  345.                     }  
  346.                 } else {  
  347.                     if (obj.complete) {  
  348.                         obj.complete();  
  349.                     }  
  350.                 }  
  351.             };  
  352.         },  
  353.         Cookies : {  
  354.             setCookie : function (sName, sValue, oExpires, sPath, sDomain, bSecure) {  
  355.                 var sCookie = sName + '=' + encodeURIComponent(sValue);  
  356.                 if (oExpires) {  
  357.                     var date = new Date();  
  358.                     date.setTime(date.getTime() + oExpires * 60 * 60 * 1000);  
  359.                     sCookie += '; expires=' + date.toUTCString();  
  360.                 }  
  361.                 if (sPath) {  
  362.                     sCookie += '; path=' + sPath;  
  363.                 }  
  364.                 if (sDomain) {  
  365.                     sCookie += '; domain=' + sDomain;  
  366.                 }  
  367.                 if (bSecure) {  
  368.                     sCookie += '; secure';  
  369.                 }  
  370.                 d.cookie = sCookie;  
  371.             },  
  372.             getCookie : function (sName) {  
  373.                 var sRE = '(?:; )?' + sName + '=([^;]*)';  
  374.                 var oRE = new RegExp(sRE);  
  375.                 if (oRE.test(d.cookie)) {  
  376.                     return decodeURIComponent(RegExp[$1]);  
  377.                 } else {  
  378.                     return null;  
  379.                 }  
  380.             },  
  381.             removeCookie : function (sName, sPath, sDomain) {  
  382.                 this.setCookie(sName, '', new Date(0), sPath, sDomain);  
  383.             },  
  384.             clearAllCookie : function () {  
  385.                 var cookies = d.cookie.split(";");  
  386.                 var len = cookies.length;  
  387.                 for (var i = 0; i < len; i++) {  
  388.                     var cookie = cookies[i];  
  389.                     var eqPos = cookie.indexOf("=");  
  390.                     var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;  
  391.                     name = name.replace(/^\s*|\s*$/, "");  
  392.                     d.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";  
  393.                 }  
  394.             }  
  395.         },  
  396.         tabSort : function (sTableID, iCol, sDataType) { //排序函数,sTableID为目标,iCol哪列排序,为必需,sDataType可选  
  397.             var oTable = document.getElementById(sTableID);  
  398.             var oTBody = oTable.tBodies[0];  
  399.             var colDataRows = oTBody.rows;  
  400.             var aTRs = [];  
  401.             var len = colDataRows.length;  
  402.             function convert(sValue, sDataType) { //类型转,根据不同类型数据排序,比如,整型,日期,浮点,字符串,接受两个参数,一个是值,一个是排序的数据类型  
  403.                 switch (sDataType) {  
  404.                 case "int":  
  405.                     return parseInt(sValue);  
  406.                 case "float":  
  407.                     return parseFloat(sValue);  
  408.                 case "date":  
  409.                     return new Date(Date.parse(sValue));  
  410.                 default:  
  411.                     return sValue.toString();  
  412.                 }  
  413.             }  
  414.             function geterateCompareTRs(iCol, sDataType) { //比较函数,用于sort排序用  
  415.                 return function compareTRs(oTR1, oTR2) {  
  416.                     var vValue1,  
  417.                     vValue2;  
  418.                     if (oTR1.cells[iCol].getAttribute("value")) { //用于高级排序,比如图片,添加一个额外的属性来排序  
  419.                         vValue1 = convert(oTR1.cells[iCol].getAttribute("value"), sDataType);  
  420.                         vValue2 = convert(oTR2.cells[iCol].getAttribute("value"), sDataType);  
  421.                     } else {  
  422.                         vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);  
  423.                         vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);  
  424.                     }  
  425.                     if (vValue1 < vValue2) {  
  426.                         return -1;  
  427.                     } else if (vValue1 > vValue2) {  
  428.                         return 1;  
  429.                     } else {  
  430.                         return 0;  
  431.                     }  
  432.                 };  
  433.             }  
  434.             for (var i = 0; i < len; i++) {  
  435.                 aTRs[i] = colDataRows[i];  
  436.             }  
  437.             if (oTable.sortCol == iCol) { //如果已经排序,则倒序  
  438.                 aTRs.reverse();  
  439.             } else {  
  440.                 aTRs.sort(geterateCompareTRs(iCol, sDataType));  
  441.             }  
  442.             var oFragment = document.createDocumentFragment();  
  443.             var trlen = aTRs.length;  
  444.             for (var j = 0; j < trlen; j++) {  
  445.                 oFragment.appendChild(aTRs[j]);  
  446.             }  
  447.             oTBody.appendChild(oFragment);  
  448.             oTable.sortCol = iCol; //设置一个状态  
  449.         },  
  450.         Browse : {  
  451.             isIE : ie,  
  452.             isFF : ff  
  453.         },  
  454.         trim : function (str) {  
  455.             var re = /^\s*(.*?)\s*$/;  
  456.             return str.replace(re, '$1');  
  457.         },  
  458.         escape : function (str) {  
  459.             var s = "";  
  460.             if (str.length === 0) {  
  461.                 return "";  
  462.             }  
  463.             s = str.replace(/&/g, "&amp;");  
  464.             s = s.replace(/</g, "&lt;");  
  465.             s = s.replace(/>/g, "&gt;");  
  466.             s = s.replace(/ /g, "&nbsp;");  
  467.             s = s.replace(/\'/g, "&#39;");  
  468.             s = s.replace(/\"/g, "&quot;");  
  469.             return s;  
  470.         },  
  471.         getQueryString : function (name) {  
  472.             var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  
  473.             var r = location.search.substr(1).match(reg);  
  474.             if (r !== null)  
  475.                 return unescape(r[2]);  
  476.             return null;  
  477.         },  
  478.         Error : function (obj, info) {  
  479.             if (!this.debug) {  
  480.                 return;  
  481.             }  
  482.             throw Error(obj);  
  483.         }  
  484.     };  
  485.     Kingwell = KW;  
  486. })(window, document);  

 


不断地完善中....有些功能正在做,有些还在测试,现在还不完善。

目录
相关文章
|
16天前
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
|
21天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
21天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
22天前
|
JavaScript
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
9 0
|
2天前
|
JavaScript 前端开发
js开发:请解释this关键字在JavaScript中的用法。
【4月更文挑战第23天】JavaScript的this关键字根据执行环境指向不同对象:全局中指向全局对象(如window),普通函数中默认指向全局对象,作为方法调用时指向调用对象;构造函数中指向新实例,箭头函数继承所在上下文的this。可通过call、apply、bind方法显式改变this指向。
7 1
|
6天前
|
算法
Swiper库和Glide.js库的性能有何区别
Swiper和Glide.js是两个流行的响应式轮播图库。Swiper功能强大且灵活,支持多方向滑动,拥有丰富的配置和切换效果,适合复杂需求,其高性能得益于优化的算法和惰性加载。Glide.js则轻量级、快速,专注于基础功能,适合简洁需求。两者各有侧重,选择应基于项目具体需求和性能考虑。
|
8天前
|
缓存 JavaScript 前端开发
js的入口函数,入口函数的作用
js的入口函数,入口函数的作用
14 4
|
23天前
|
存储 前端开发 JavaScript
JavaScript如何封装一些常见的函数来提高工作效率
通过封装这些常见函数,你可以在项目中重复使用,提高代码的复用性和工作效率。这些函数包括获取元素、发起Ajax请求、处理本地存储、日期格式化、定时器等功能,可以在不同场景中减少重复的代码编写。
7 0
JavaScript如何封装一些常见的函数来提高工作效率
|
前端开发 JavaScript
Javascript 面向对象编程(一):封装
作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。
768 0