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

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

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

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

  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. getItem : function (strValue) {},
  255. removeItem : function (strValue) {},
  256. removeAll : function () {}
  257. },
  258. getScript : function (obj, callback, order) {
  259. var self = this,
  260. arr = obj,
  261. timeout,
  262. ord = order || true,
  263. num = 0,
  264. str = typeof obj === 'string';
  265. if (!arr) {
  266. this.Error(tip.require);
  267. return;
  268. }
  269. function add() {
  270. if (arr[0] === undefined) {
  271. return;
  272. }
  273. var script = KW.Dom.createElement("script", {
  274. 'src' : (str ? obj : arr[num]),
  275. 'type' : 'text/javascript'
  276. }),
  277. header = d.getElementsByTagName("head")[0];
  278. if (str) {
  279. if (script.readyState) {
  280. script.onreadystatechange = function () {
  281. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  282. script.onreadystatechange = null;
  283. callback && callback();
  284. }
  285. };
  286. } else {
  287. script.onload = function () {
  288. callback && callback();
  289. };
  290. }
  291. } else {
  292. if (arr.length >= 1) {
  293. if (script.readyState) {
  294. script.onreadystatechange = function () {
  295. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  296. script.onreadystatechange = null;
  297. arr.shift();
  298. timeout = setTimeout(add, 1);
  299. }
  300. };
  301. } else {
  302. script.onload = function () {
  303. arr.shift();
  304. timeout = setTimeout(add, 1);
  305. };
  306. }
  307. } else {
  308. clearTimeout(timeout);
  309. callback && callback();
  310. }
  311. }
  312. header.appendChild(script);
  313. }
  314. add();
  315. },
  316. Ajax : function (obj) {
  317. if (!obj.url) {
  318. return false;
  319. }
  320. var method = obj.type || "GET";
  321. var async = obj.async || true;
  322. var dataType = obj.dataType;
  323. var XHR = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
  324. XHR.open(method, obj.url, async);
  325. XHR.setRequestHeader('If-Modified-Since', 'Thu, 06 Apr 2006 00:00: 00 GMT');
  326. XHR.send(null);
  327. if (obj.sendBefore) {
  328. obj.sendBefore();
  329. }
  330. XHR.onreadystatechange = function () {
  331. if (XHR.readyState == 4 && (XHR.status >= 200 && XHR.status < 300 || XHR.status == 304)) {
  332. if (obj.success) {
  333. if (dataType && dataType.toLocaleLowerCase() === "json") {
  334. obj.success.call(XHR, eval("(" + XHR.responseText + ")"));
  335. } else if (dataType && dataType.toLocaleLowerCase() === "xml") {
  336. obj.success.call(XHR, XHR.responseXML);
  337. } else {
  338. obj.success.call(XHR, XHR.responseText);
  339. }
  340. }
  341. if (obj.complete) {
  342. obj.complete();
  343. }
  344. } else {
  345. if (obj.complete) {
  346. obj.complete();
  347. }
  348. }
  349. };
  350. },
  351. Cookies : {
  352. setCookie : function (sName, sValue, oExpires, sPath, sDomain, bSecure) {
  353. var sCookie = sName + '=' + encodeURIComponent(sValue);
  354. if (oExpires) {
  355. var date = new Date();
  356. date.setTime(date.getTime() + oExpires * 60 * 60 * 1000);
  357. sCookie += '; expires=' + date.toUTCString();
  358. }
  359. if (sPath) {
  360. sCookie += '; path=' + sPath;
  361. }
  362. if (sDomain) {
  363. sCookie += '; domain=' + sDomain;
  364. }
  365. if (bSecure) {
  366. sCookie += '; secure';
  367. }
  368. d.cookie = sCookie;
  369. },
  370. getCookie : function (sName) {
  371. var sRE = '(?:; )?' + sName + '=([^;]*)';
  372. var oRE = new RegExp(sRE);
  373. if (oRE.test(d.cookie)) {
  374. return decodeURIComponent(RegExp[$1]);
  375. } else {
  376. return null;
  377. }
  378. },
  379. removeCookie : function (sName, sPath, sDomain) {
  380. this.setCookie(sName, '', new Date(0), sPath, sDomain);
  381. },
  382. clearAllCookie : function () {
  383. var cookies = d.cookie.split(";");
  384. var len = cookies.length;
  385. for (var i = 0; i < len; i++) {
  386. var cookie = cookies[i];
  387. var eqPos = cookie.indexOf("=");
  388. var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
  389. name = name.replace(/^\s*|\s*$/, "");
  390. d.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
  391. }
  392. }
  393. },
  394. tabSort : function (sTableID, iCol, sDataType) { //排序函数,sTableID为目标,iCol哪列排序,为必需,sDataType可选
  395. var oTable = document.getElementById(sTableID);
  396. var oTBody = oTable.tBodies[0];
  397. var colDataRows = oTBody.rows;
  398. var aTRs = [];
  399. var len = colDataRows.length;
  400. function convert(sValue, sDataType) { //类型转,根据不同类型数据排序,比如,整型,日期,浮点,字符串,接受两个参数,一个是值,一个是排序的数据类型
  401. switch (sDataType) {
  402. case "int":
  403. return parseInt(sValue);
  404. case "float":
  405. return parseFloat(sValue);
  406. case "date":
  407. return new Date(Date.parse(sValue));
  408. default:
  409. return sValue.toString();
  410. }
  411. }
  412. function geterateCompareTRs(iCol, sDataType) { //比较函数,用于sort排序用
  413. return function compareTRs(oTR1, oTR2) {
  414. var vValue1,
  415. vValue2;
  416. if (oTR1.cells[iCol].getAttribute("value")) { //用于高级排序,比如图片,添加一个额外的属性来排序
  417. vValue1 = convert(oTR1.cells[iCol].getAttribute("value"), sDataType);
  418. vValue2 = convert(oTR2.cells[iCol].getAttribute("value"), sDataType);
  419. } else {
  420. vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
  421. vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
  422. }
  423. if (vValue1 < vValue2) {
  424. return -1;
  425. } else if (vValue1 > vValue2) {
  426. return 1;
  427. } else {
  428. return 0;
  429. }
  430. };
  431. }
  432. for (var i = 0; i < len; i++) {
  433. aTRs[i] = colDataRows[i];
  434. }
  435. if (oTable.sortCol == iCol) { //如果已经排序,则倒序
  436. aTRs.reverse();
  437. } else {
  438. aTRs.sort(geterateCompareTRs(iCol, sDataType));
  439. }
  440. var oFragment = document.createDocumentFragment();
  441. var trlen = aTRs.length;
  442. for (var j = 0; j < trlen; j++) {
  443. oFragment.appendChild(aTRs[j]);
  444. }
  445. oTBody.appendChild(oFragment);
  446. oTable.sortCol = iCol; //设置一个状态
  447. },
  448. Browse : {
  449. isIE : ie,
  450. isFF : ff
  451. },
  452. trim : function (str) {
  453. var re = /^\s*(.*?)\s*$/;
  454. return str.replace(re, '$1');
  455. },
  456. escape : function (str) {
  457. var s = "";
  458. if (str.length === 0) {
  459. return "";
  460. }
  461. s = str.replace(/&/g, "&amp;");
  462. s = s.replace(/</g, "&lt;");
  463. s = s.replace(/>/g, "&gt;");
  464. s = s.replace(/ /g, "&nbsp;");
  465. s = s.replace(/\'/g, "'");
  466. s = s.replace(/\"/g, "&quot;");
  467. return s;
  468. },
  469. getQueryString : function (name) {
  470. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  471. var r = location.search.substr(1).match(reg);
  472. if (r !== null)
  473. return unescape(r[2]);
  474. return null;
  475. },
  476. Error : function (obj, info) {
  477. if (!this.debug) {
  478. return;
  479. }
  480. throw Error(obj);
  481. }
  482. };
  483. Kingwell = KW;
  484. })(window, document);

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

我自己的Javascript 库,封装了一些常用函数 Kingwell.js的更多相关文章

  1. JavaScript的使用以及JS常用函数(JS 遍历数组和集合)

    JavaScript入门 学习总结 1. 什么是 JavaScript 2. JavaScript 的特点 3. JS的使用 编写位置 基本语法 变量 打印变量 数据类型 innerHTML和inne ...

  2. javascript基础一语法和常用函数

    1语法 1.1引入的方式 在html中引入javascript,使用script标签,在html页面中包括外部引入js方式和在html内部引入js方式.如下两种: 方式一: <script ty ...

  3. Go标准库学习之OS常用函数

    1.OS基础操作 //获取主机名 os.Hostname() //获取当前目录 os.Getwd() //获取用户ID os.Getuid() //获取有效用户ID os.Geteuid() //获取 ...

  4. c++标准库中的string常用函数总结《转》

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  5. 流行的JavaScript库 ——jQuery

    1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的 Web2.0 特性的富客 ...

  6. 第一百二十九节,JavaScript,理解JavaScript库

    JavaScript,理解JavaScript库 学习要点: 1.项目介绍 2.理解JavaScript库 3.创建基础库 从本章,我们来用之前的基础知识来写一个项目,用以巩固之前所学.那么,每个项目 ...

  7. [Web 前端] 流行的JavaScript库 ——jQuery

    cp : https://www.cnblogs.com/zhoushihui/p/5141767.html   1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. ...

  8. javascript库概念与连缀

    一.JavaScript 库 1.什么是javascript库: javascript库,说白了,就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript ...

  9. 2015年10个最佳Web开发JavaScript库

    2015年10个最佳Web开发JavaScript库 现在的互联网可谓是无所不有,有大量的JavaScript项目开发工具充斥于网络中.我们可以参考网上的指导来获取构建代码项目的各种必要信息.如果你是 ...

随机推荐

  1. 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

    众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用i ...

  2. XCODE UITextField 中的属性和用法

    XCODE  UITextField  中的属性和用法 一些基本的用法 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedR ...

  3. scrollIntoView

    DOM的滚动 DOM规范中并没有规定各浏览器需要实现怎样的滚动页面区域,各浏览器实现了相应的方法,可以使用不同的方式控制页面区域的滚动.这些方法作为HTMLElement类型的扩展存在,所以它能在所有 ...

  4. [Cocos2d-x For WP8]Scene场景

         场景(CCScene) 在游戏里,场景就是关卡. CCScene是app工作流程上独立块,一个app可能拥有多个scene,但是在任何时候只能有一个是激活状态的.一个CCScene对象由一个 ...

  5. Ubuntu Gnome 14.04.2 lts 折腾笔记

    unity感觉不爽,于是来折腾gnome3 = = 首先去官网下载ubuntu gnome 14.04.2 lts的包(种子:http://cdimage.ubuntu.com/ubuntu-gnom ...

  6. CF 22B. Bargaining Table

    水题.好久没有写过优化搜索题了. #include <cstdio> #include <cstring> #include <iostream> #include ...

  7. 某个 UIView的dealloc方法不执行

    一,可能情况: 1> timer 没有清楚 2> 循环引用 3> block引用了实例变量. 二,查找到结果竟是 1> 没有使用 property 创建的属性,默认是强引用,会 ...

  8. db2代理和优化

    DB2 的代理 (agent) 是位于 DB2 服务器中的服务于应用程序请求的一些进程或线程.当有外部应用程序连接至 DB2 实例提出访问请求时,DB2 的代理就会被激活去应答这些请求.一般 DB2 ...

  9. Poj 3250 单调栈

    1.Poj 3250  Bad Hair Day 2.链接:http://poj.org/problem?id=3250 3.总结:单调栈 题意:n头牛,当i>j,j在i的右边并且i与j之间的所 ...

  10. viso 由于形状保护和/或图层属性设置不能进行编辑

    viso 由于形状保护和/或图层属性设置不能进行编辑 2003: 若要变通解决此问题,删除 从删除 的保护属性,当您尝试删除一个受保护的组件.若要这样做,请按照下列步骤操作:在 Visio 2003或 ...