JavaScript常用方法函数收集

jopen 9年前

本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助。

1. 字符串长度截取

function cutstr(str, len) {      var temp,          icount = 0,          patrn = /[^\x00-\xff]/,          strre = "";      for (var i = 0; i < str.length; i++) {          if (icount < len - 1) {              temp = str.substr(i, 1);                  if (patrn.exec(temp) == null) {                     icount = icount + 1              } else {                  icount = icount + 2              }              strre += temp              } else {              break;          }      }      return strre + "..."  }

2. 替换全部

String.prototype.replaceAll = function(s1, s2) {      return this.replace(new RegExp(s1, "gm"), s2)  }

3. 清除空格

String.prototype.trim = function() {      var reExtraSpace = /^\s*(.*?)\s+$/;      return this.replace(reExtraSpace, "$1")  }

4. 清除左空格/右空格

function ltrim(s){ return s.replace( /^(\s*| *)/, ""); }   function rtrim(s){ return s.replace( /(\s*| *)$/, ""); }

5. 判断是否以某个字符串开头

String.prototype.startWith = function (s) {      return this.indexOf(s) == 0  }

6. 判断是否以某个字符串结束

String.prototype.endWith = function (s) {      var d = this.length - s.length;      return (d >= 0 && this.lastIndexOf(s) == d)  }

7. 转义html标签

function HtmlEncode(text) {      return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')  }

8. 时间日期格式转换

Date.prototype.Format = function(formatStr) {      var str = formatStr;      var Week = ['日', '一', '二', '三', '四', '五', '六'];      str = str.replace(/yyyy|YYYY/, this.getFullYear());      str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));      str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));      str = str.replace(/M/g, (this.getMonth() + 1));      str = str.replace(/w|W/g, Week[this.getDay()]);      str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());      str = str.replace(/d|D/g, this.getDate());      str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());      str = str.replace(/h|H/g, this.getHours());      str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());      str = str.replace(/m/g, this.getMinutes());      str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());      str = str.replace(/s|S/g, this.getSeconds());      return str  }

9. 判断是否为数字类型

function isDigit(value) {      var patrn = /^[0-9]*$/;      if (patrn.exec(value) == null || value == "") {          return false      } else {          return true      }  }

10. 设置cookie值

function setCookie(name, value, Hours) {      var d = new Date();      var offset = 8;      var utc = d.getTime() + (d.getTimezoneOffset() * 60000);      var nd = utc + (3600000 * offset);      var exp = new Date(nd);      exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);      document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"  }

11. 获取cookie值

function getCookie(name) {      var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));      if (arr != null) return unescape(arr[2]);      return null  }

12. 加入收藏夹

function AddFavorite(sURL, sTitle) {      try {          window.external.addFavorite(sURL, sTitle)      } catch(e) {          try {              window.sidebar.addPanel(sTitle, sURL, "")          } catch(e) {              alert("加入收藏失败,请使用Ctrl+D进行添加")          }      }  }

13. 设为首页

function setHomepage() {      if (document.all) {          document.body.style.behavior = 'url(#default#homepage)';          document.body.setHomePage('http://w3cboy.com')      } else if (window.sidebar) {          if (window.netscape) {              try {                  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")              } catch(e) {                  alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")                  }          }          var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);          prefs.setCharPref('browser.startup.homepage', 'http://w3cboy.com')      }  }

14. 加载样式文件

function LoadStyle(url) {      try {          document.createStyleSheet(url)      } catch(e) {          var cssLink = document.createElement('link');          cssLink.rel = 'stylesheet';          cssLink.type = 'text/css';          cssLink.href = url;          var head = document.getElementsByTagName('head')[0];          head.appendChild(cssLink)      }  }

15. 返回脚本内容

function evalscript(s) {      if(s.indexOf('<script') == -1) return s;      var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;      var arr = [];      while(arr = p.exec(s)) {          var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;          var arr1 = [];          arr1 = p1.exec(arr[0]);          if(arr1) {              appendscript(arr1[1], '', arr1[2], arr1[3]);          } else {              p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;              arr1 = p1.exec(arr[0]);              appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);          }      }      return s;  }

16. 清除脚本内容

function stripscript(s) {      return s.replace(/<script.*?>.*?<\/script>/ig, '');  }

17. 动态加载脚本文件

function appendscript(src, text, reload, charset) {      var id = hash(src + text);      if(!reload && in_array(id, evalscripts)) return;      if(reload && $(id)) {          $(id).parentNode.removeChild($(id));      }         evalscripts.push(id);      var scriptNode = document.createElement("script");      scriptNode.type = "text/javascript";      scriptNode.id = id;      scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);      try {          if(src) {              scriptNode.src = src;              scriptNode.onloadDone = false;              scriptNode.onload = function () {                  scriptNode.onloadDone = true;                  JSLOADED[src] = 1;               };               scriptNode.onreadystatechange = function () {                   if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {                      scriptNode.onloadDone = true;                      JSLOADED[src] = 1;                  }               };          } else if(text){              scriptNode.text = text;          }          document.getElementsByTagName('head')[0].appendChild(scriptNode);      } catch(e) {}  }

18. 返回按ID检索的元素对象

function $(id) {      return !id ? null : document.getElementById(id);  }

19. 跨浏览器绑定事件

function addEventSamp(obj,evt,fn){       if(!oTarget){return;}      if (obj.addEventListener) {           obj.addEventListener(evt, fn, false);       }else if(obj.attachEvent){           obj.attachEvent('on'+evt,fn);       }else{          oTarget["on" + sEvtType] = fn;      }   }

20. 跨浏览器删除事件

function delEvt(obj,evt,fn){      if(!obj){return;}      if(obj.addEventListener){          obj.addEventListener(evt,fn,false);      }else if(oTarget.attachEvent){          obj.attachEvent("on" + evt,fn);      }else{          obj["on" + evt] = fn;      }  }

21. 为元素添加on方法

Element.prototype.on = Element.prototype.addEventListener;     NodeList.prototype.on = function (event, fn) {、      []['forEach'].call(this, function (el) {          el.on(event, fn);      });      return this;  };

22. 为元素添加trigger方法

Element.prototype.trigger = function (type, data) {      var event = document.createEvent('HTMLEvents');      event.initEvent(type, true, true);      event.data = data || {};      event.eventName = type;      event.target = this;      this.dispatchEvent(event);      return this;  };     NodeList.prototype.trigger = function (event) {      []['forEach'].call(this, function (el) {          el['trigger'](event);      });      return this;  };

23. 检验URL链接是否有效

function getUrlState(URL){       var xmlhttp = new ActiveXObject("microsoft.xmlhttp");       xmlhttp.Open("GET",URL, false);        try{                xmlhttp.Send();       }catch(e){      }finally{           var result = xmlhttp.responseText;           if(result){              if(xmlhttp.Status==200){                   return(true);                }else{                      return(false);                }            }else{                return(false);            }       }  }

24. 格式化CSS样式代码

function formatCss(s){//格式化代码      s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");      s = s.replace(/;\s*;/g, ";"); //清除连续分号      s = s.replace(/\,[\s\.\#\d]*{/g, "{");      s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");      s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");      s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");      return s;  }

25. 压缩CSS样式代码

function compressCss (s) {//压缩代码      s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释      s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");      s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理      s = s.replace(/;\s*;/g, ";"); //清除连续分号      s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白      return (s == null) ? "" : s[1];  }

26. 获取当前路径

var currentPageUrl = "";  if (typeof this.href === "undefined") {      currentPageUrl = document.location.toString().toLowerCase();  }else {      currentPageUrl = this.href.toString().toLowerCase();  }

27. 判断是否移动设备

function isMobile(){      if (typeof this._isMobile === 'boolean'){          return this._isMobile;      }      var screenWidth = this.getScreenWidth();      var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport ||rendererModel.runningExperiments.fixviewport;      var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");      if(!fixViewPortsExperiment){          if(!this.isAppleMobileDevice()){              screenWidth = screenWidth/window.devicePixelRatio;          }      }      var isMobileScreenSize = screenWidth < 600;      var isMobileUserAgent = false;      this._isMobile = isMobileScreenSize && this.isTouchScreen();      return this._isMobile;  }

28. 判断是否移动设备访问

function isMobileUserAgent(){      return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));  }

29. 判断是否苹果移动设备访问

function isAppleMobileDevice(){      return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));  }

30. 判断是否安卓移动设备访问

function isAndroidMobileDevice(){      return (/android/i.test(navigator.userAgent.toLowerCase()));  }

31. 判断是否Touch屏幕

function isTouchScreen(){      return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);  }

32. 判断是否打开视窗

function isViewportOpen() {      return !!document.getElementById('wixMobileViewport');  }

33. 获取移动设备初始化大小

function getInitZoom(){      if(!this._initZoom){          var screenWidth = Math.min(screen.height, screen.width);          if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){              screenWidth = screenWidth/window.devicePixelRatio;          }              this._initZoom = screenWidth /document.body.offsetWidth;          }      return this._initZoom;  }

34. 获取移动设备最大化大小

function getZoom(){      var screenWidth = (Math.abs(window.orientation) === 90) ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width);      if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){          screenWidth = screenWidth/window.devicePixelRatio;      }      var FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;      var FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new");      if(FixViewPortsExperimentRunning){          return screenWidth / window.innerWidth;      }else{          return screenWidth / document.body.offsetWidth;      }  }

35. 获取移动设备屏幕宽度

function getScreenWidth(){      var smallerSide = Math.min(screen.width, screen.height);      var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;      var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");      if(fixViewPortsExperiment){          if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){              smallerSide = smallerSide/window.devicePixelRatio;          }      }      return smallerSide;  }

36. 完美判断是否为网址

function IsURL(strUrl) {      var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i      if (regular.test(strUrl)) {          return true;      }else {          return false;      }  }

37. getElementsByClassName

function getElementsByClassName(name) {      var tags = document.getElementsByTagName('*') || document.all;      var els = [];      for (var i = 0; i < tags.length; i++) {          if (tags.className) {              var cs = tags.className.split(' ');              for (var j = 0; j < cs.length; j++) {                  if (name == cs[j]) {                      els.push(tags);                      break                  }              }          }      }      return els  }

38. 获取页面高度

function getPageHeight(){      var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat"                      ? a                      : g.documentElement;      return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);  }

39. 获取页面可视宽度

function getPageViewWidth(){      var d = document, a = d.compatMode == "BackCompat"                      ? d.body                      : d.documentElement;      return a.clientWidth;  }

40. 获取页面宽度

function getPageWidth(){      var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat"                      ? a                      : g.documentElement;      return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);  }

41. 获取页面scrollTop

function getPageScrollTop(){      var a = document;      return a.documentElement.scrollTop || a.body.scrollTop;  }

42. 获取页面可视高度

function getPageViewHeight() {      var d = document, a = d.compatMode == "BackCompat"                      ? d.body                      : d.documentElement;      return a.clientHeight;  }

43. 去掉url前缀

function removeUrlPrefix(a){      a=a.replace(/:/g,":").replace(/./g,".").replace(///g,"/");      while(trim(a).toLowerCase().indexOf("http://")==0){          a=trim(a.replace(/http:\/\//i,""));      }      return a;  }

44. 随机数时间戳

function uniqueId(){      var a=Math.random,b=parseInt;      return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());  }

45. 全角半角转换

//iCase: 0全到半,1半到全,其他不转化  function chgCase(sStr,iCase){      if(typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1)){          return sStr;      }      var i,oRs=[],iCode;      if(iCase){/*半->全*/          for(i=0; i<sStr.length;i+=1){               iCode = sStr.charCodeAt(i);              if(iCode == 32){                  iCode = 12288;                                              }else if(iCode < 127){                  iCode += 65248;              }                  oRs.push(String.fromCharCode(iCode));               }                      }else{/*全->半*/          for(i=0; i<sStr.length;i+=1){               iCode = sStr.charCodeAt(i);              if(iCode == 12288){                  iCode = 32;              }else if(iCode > 65280 && iCode < 65375){                  iCode -= 65248;                                              }                  oRs.push(String.fromCharCode(iCode));            }                      }                      return oRs.join("");                  }

46. 确认是否键盘有效输入值

function checkKey(iKey){      if(iKey == 32 || iKey == 229){return true;}/*空格和异常*/      if(iKey>47 && iKey < 58){return true;}/*数字*/      if(iKey>64 && iKey < 91){return true;}/*字母*/      if(iKey>95 && iKey < 108){return true;}/*数字键盘1*/      if(iKey>108 && iKey < 112){return true;}/*数字键盘2*/      if(iKey>185 && iKey < 193){return true;}/*符号1*/      if(iKey>218 && iKey < 223){return true;}/*符号2*/      return false;  }

47. 获取网页被卷去的位置

function getScrollXY() {      return document.body.scrollTop ? {          x: document.body.scrollLeft,          y: document.body.scrollTop      }: {          x: document.documentElement.scrollLeft,          y: document.documentElement.scrollTop      }  }

48. 日期格式化函数+调用方法

Date.prototype.format = function(format){      var o = {          "M+" : this.getMonth()+1, //month          "d+" : this.getDate(),    //day          "h+" : this.getHours(),   //hour          "m+" : this.getMinutes(), //minute          "s+" : this.getSeconds(), //second          "q+" : Math.floor((this.getMonth()+3)/3),  //quarter          "S" : this.getMilliseconds() //millisecond      };      if(/(y+)/.test(format)) format=format.replace(RegExp.$1,  (this.getFullYear()+"").substr(4 - RegExp.$1.length));      for(var k in o){          if(new RegExp("("+ k +")").test(format))              format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length));      }      return format;  }  alert(new Date().format("yyyy-MM-dd hh:mm:ss"));

49. 时间个性化输出功能

/*  1、< 60s, 显示为“刚刚”  2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”  3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”  4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”  5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”  */  function timeFormat(time){      var date = new Date(time),          curDate = new Date(),          year = date.getFullYear(),          month = date.getMonth() + 10,          day = date.getDate(),          hour = date.getHours(),          minute = date.getMinutes(),          curYear = curDate.getFullYear(),          curHour = curDate.getHours(),          timeStr;        if(year < curYear){          timeStr = year +'年'+ month +'月'+ day +'日 '+ hour +':'+ minute;      }else{          var pastTime = curDate - date,              pastH = pastTime/3600000;            if(pastH > curHour){                timeStr = month +'月'+ day +'日 '+ hour +':'+ minute;          }else if(pastH >= 1){                timeStr = '今天 ' + hour +':'+ minute +'分';          }else{                var pastM = curDate.getMinutes() - minute;                if(pastM > 1){                  timeStr = pastM +'分钟前';                }else{                  timeStr = '刚刚';                }          }      }      return timeStr;  }

50. 解决offsetX兼容性问题

// 针对火狐不支持offsetX/Y  function getOffset(e){      var target = e.target, // 当前触发的目标对象            eventCoord,            pageCoord,            offsetCoord;        // 计算当前触发元素到文档的距离      pageCoord = getPageCoord(target);        // 计算光标到文档的距离      eventCoord = {          X : window.pageXOffset + e.clientX,          Y : window.pageYOffset + e.clientY      };        // 相减获取光标到第一个定位的父元素的坐标      offsetCoord = {          X : eventCoord.X - pageCoord.X,          Y : eventCoord.Y - pageCoord.Y      };      return offsetCoord;  }    function getPageCoord(element){      var coord = { X : 0, Y : 0 };      // 计算从当前触发元素到根节点为止,      // 各级 offsetParent 元素的 offsetLeft 或 offsetTop 值之和      while (element){          coord.X += element.offsetLeft;          coord.Y += element.offsetTop;          element = element.offsetParent;      }      return coord;  }

51. 常用的正则表达式

//正整数  /^[0-9]*[1-9][0-9]*$/;  //负整数  /^-[0-9]*[1-9][0-9]*$/;  //正浮点数  /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;     //负浮点数  /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;    //浮点数  /^(-?\d+)(\.\d+)?$/;  //email地址  /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;  //url地址  /^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;  或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$   //年/月/日(年-月-日、年.月.日)  /^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;  //匹配中文字符  /[\u4e00-\u9fa5]/;  //匹配帐号是否合法(字母开头,允许5-10字节,允许字母数字下划线)  /^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;  //匹配空白行的正则表达式  /\n\s*\r/;  //匹配中国邮政编码  /[1-9]\d{5}(?!\d)/;  //匹配身份证  /\d{15}|\d{18}/;  //匹配国内电话号码  /(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/;  //匹配IP地址  /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/;  //匹配首尾空白字符的正则表达式  /^\s*|\s*$/;  //匹配HTML标记的正则表达式  < (\S*?)[^>]*>.*?|< .*? />;  //sql 语句  ^(select|drop|delete|create|update|insert).*$  //提取信息中的网络链接  (h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?   //提取信息中的邮件地址  \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*   //提取信息中的图片链接  (s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?   //提取信息中的 IP 地址  (\d+)\.(\d+)\.(\d+)\.(\d+)  //取信息中的中国手机号码  (86)*0*13\d{9}   //提取信息中的中国邮政编码  [1-9]{1}(\d+){5}   //提取信息中的浮点数(即小数)  (-?\d*)\.?\d+   //提取信息中的任何数字  (-?\d*)(\.\d+)?  //电话区号  ^0\d{2,3}$  //腾讯 QQ 号  ^[1-9]*[1-9][0-9]*$   //帐号(字母开头,允许 5-16 字节,允许字母数字下划线)  ^[a-zA-Z][a-zA-Z0-9_]{4,15}$   //中文、英文、数字及下划线  ^[\u4e00-\u9fa5_a-zA-Z0-9]+$

52. 返回顶部的通用方法

function backTop(btnId) {      var btn = document.getElementById(btnId);      var d = document.documentElement;      var b = document.body;      window.onscroll = set;      btn.style.display = "none";      btn.onclick = function() {          btn.style.display = "none";          window.onscroll = null;          this.timer = setInterval(function() {              d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);              b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);              if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);              }, 10);      };      function set() {          btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"      }  };  backTop('goTop');

53. 获得URL中GET参数值

// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"]  function get_get(){       querystr = window.location.href.split("?")      if(querystr[1]){          GETs = querystr[1].split("&");          GET = [];          for(i=0;i<GETs.length;i++){                tmp_arr = GETs.split("=")                key=tmp_arr[0]                GET[key] = tmp_arr[1]          }      }      return querystr[1];  }

54. 打开一个窗体通用方法

function openWindow(url,windowName,width,height){      var x = parseInt(screen.width / 2.0) - (width / 2.0);       var y = parseInt(screen.height / 2.0) - (height / 2.0);      var isMSIE= (navigator.appName == "Microsoft Internet Explorer");      if (isMSIE) {          var p = "resizable=1,location=no,scrollbars=no,width=";          p = p+width;             p = p+",height=";             p = p+height;          p = p+",left=";          p = p+x;          p = p+",top=";          p = p+y;          retval = window.open(url, windowName, p);      } else {          var win = window.open(url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" );          eval("try { win.resizeTo(width, height); } catch(e) { }");          win.focus();      }  }

55. 提取页面代码中所有网址

var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");  alert(aa);

56. 清除相同的数组

String.prototype.unique=function(){      var x=this.split(/[\r\n]+/);      var y='';      for(var i=0;i<x.length;i++){          if(!new RegExp("^"+x.replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)){              y+=x+"\r\n"          }      }      return y  };

57. 按字母排序,对每行进行数组排序

function SetSort(){      var text=K1.value.split(/[\r\n]/).sort().join("\r\n");//顺序      var test=K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");//反序      K1.value=K1.value!=text?text:test;  }

58. 字符串反序

function IsReverse(text){      return text.split('').reverse().join('');  }

59. 清除html代码中的脚本

function clear_script(){      K1.value=K1.value.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?"[\s\S]*?"|\s+on[a-zA-Z]{3,16}\s?=\s?'[\s\S]*?'|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,"");  }  动态执行JavaScript脚本    function javascript(){      try{        eval(K1.value);      }catch(e){        alert(e.message);      }  }

60. 动态执行VBScript脚本

function vbscript(){      try{          var script=document.getElementById("K1").value;          if(script.trim()=="")return;          window.execScript('On Error Resume Next \n'+script+'\n If Err.Number<>0 Then \n MsgBox "请输入正确的VBScript脚本!",48,"脚本错误!" \n End If',"vbscript")      }catch(e){          alert(e.message);      }  }

61. 金额大写转换函数

function transform(tranvalue) {      try {          var i = 1;          var dw2 = new Array("", "万", "亿"); //大单位          var dw1 = new Array("拾", "佰", "仟"); //小单位          var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用          //以下是小写转换成大写显示在合计大写的文本框中               //分离整数与小数          var source = splits(tranvalue);          var num = source[0];          var dig = source[1];          //转换整数部分          var k1 = 0; //计小单位          var k2 = 0; //计大单位          var sum = 0;          var str = "";          var len = source[0].length; //整数的长度          for (i = 1; i <= len; i++) {                var n = source[0].charAt(len - i); //取得某个位数上的数字                var bn = 0;                if (len - i - 1 >= 0) {                  bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字                }                sum = sum + Number(n);                if (sum != 0) {                  str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面                  if (n == '0') sum = 0;                }                if (len - i - 1 >= 0) { //在数字范围内                  if (k1 != 3) { //加小单位                        if (bn != 0) {                          str = dw1[k1].concat(str);                        }                        k1++;                  } else { //不加小单位,加大单位                        k1 = 0;                        var temp = str.charAt(0);                        if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位                        str = str.substr(1, str.length - 1);                        str = dw2[k2].concat(str);                        sum = 0;                  }                }                if (k1 == 3){ //小单位到千则大单位进一                  k2++;                }          }          //转换小数部分          var strdig = "";          if (dig != "") {                var n = dig.charAt(0);                if (n != 0) {                  strdig += dw[Number(n)] + "角"; //加数字                }                var n = dig.charAt(1);                if (n != 0) {                  strdig += dw[Number(n)] + "分"; //加数字                }          }          str += "元" + strdig;      } catch(e) {          return "0元";      }      return str;  }  //拆分整数与小数  function splits(tranvalue) {      var value = new Array('', '');      temp = tranvalue.split(".");      for (var i = 0; i < temp.length; i++) {          value = temp;      }      return value;  }

62. resize的操作

(function(){      var fn = function(){              var w = document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth                      ,r = 1255                      ,b = Element.extend(document.body)                      ,classname = b.className;              if(w < r){                      //当窗体的宽度小于1255的时候执行相应的操作              }else{                      //当窗体的宽度大于1255的时候执行相应的操作              }      }      if(window.addEventListener){              window.addEventListener('resize', function(){ fn(); });      }else if(window.attachEvent){              window.attachEvent('onresize', function(){ fn(); });      }      fn();  })();

63. 实现base64解码

function base64_decode(data){      var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";      var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "",tmp_arr = [];      if (!data) { return data; }      data += '';      do {               h1 = b64.indexOf(data.charAt(i++));              h2 = b64.indexOf(data.charAt(i++));              h3 = b64.indexOf(data.charAt(i++));              h4 = b64.indexOf(data.charAt(i++));              bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;              o1 = bits >> 16 & 0xff;              o2 = bits >> 8 & 0xff;              o3 = bits & 0xff;              if (h3 == 64) {                      tmp_arr[ac++] = String.fromCharCode(o1);              } else if (h4 == 64) {                      tmp_arr[ac++] = String.fromCharCode(o1, o2);              } else {                      tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);              }      } while (i < data.length);      dec = tmp_arr.join('');      dec = utf8_decode(dec);      return dec;  }

64. 实现utf8解码

function utf8_decode(str_data){      var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += '';      while (i < str_data.length) {              c1 = str_data.charCodeAt(i);              if (c1 < 128) {                      tmp_arr[ac++] = String.fromCharCode(c1);                      i++;              } else if (c1 > 191 && c1 < 224) {                             c2 = str_data.charCodeAt(i + 1);                      tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));                      i += 2;              } else {                      c2 = str_data.charCodeAt(i + 1);                      c3 = str_data.charCodeAt(i + 2);                      tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));                      i += 3;              }      }       return tmp_arr.join('');  }

65. 获取窗体可见范围的宽与高

function getViewSize(){      var de=document.documentElement;      var db=document.body;      var viewW=de.clientWidth==0 ?  db.clientWidth : de.clientWidth;      var viewH=de.clientHeight==0 ?  db.clientHeight : de.clientHeight;      return Array(viewW ,viewH);  }

66. 断鼠标是否移出事件

function isMouseOut(e, handler) {      if (e.type !== 'mouseout') {              return false;      }      var reltg = e.relatedTarget ? e.relatedTarget : e.type === 'mouseout' ? e.toElement : e.fromElement;      while (reltg && reltg !== handler) {              reltg = reltg.parentNode;      }      return (reltg !== handler);  }

67. 半角转换为全角函数

function ToDBC(str){      var result = '';      for(var i=0; i < str.length; i++){          code = str.charCodeAt(i);          if(code >= 33 && code <= 126){                result += String.fromCharCode(str.charCodeAt(i) + 65248);          }else if (code == 32){                result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);          }else{                result += str.charAt(i);          }      }      return result;  }

68. 全角转换为半角函数

function ToCDB(str){      var result = '';      for(var i=0; i < str.length; i++){          code = str.charCodeAt(i);          if(code >= 65281 && code <= 65374){                result += String.fromCharCode(str.charCodeAt(i) - 65248);          }else if (code == 12288){                result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);          }else{                result += str.charAt(i);          }      }      return result;  }

via: css88