javascript經常使用方法函數收集

字符串長度截取javascript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 +  "..."
}

替換所有css

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

清除空格html

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

清除左空格/右空格java

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

判斷是否以某個字符串開頭android

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

判斷是否以某個字符串結束c++

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

轉義html標籤git

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

時間日期格式轉換正則表達式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
}

判斷是否爲數字類型sql

1
2
3
4
5
6
7
8
function  isDigit(value) {
     var  patrn = /^[0-9]*$/;
     if  (patrn.exec(value) ==  null  || value ==  "" ) {
         return  false
     else  {
         return  true
     }
}

設置cookie值windows

1
2
3
4
5
6
7
8
9
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;"
}

獲取cookie值

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

加入收藏夾

1
2
3
4
5
6
7
8
9
10
11
function  AddFavorite(sURL, sTitle) {
     try  {
         window.external.addFavorite(sURL, sTitle)
     catch (e) {
         try  {
             window.sidebar.addPanel(sTitle, sURL,  "" )
         catch (e) {
             alert( "加入收藏失敗,請使用Ctrl+D進行添加" )
         }
     }
}

設爲首頁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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' )
     }
}

加載樣式文件

1
2
3
4
5
6
7
8
9
10
11
12
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)
     }
}

返回腳本內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}

清除腳本內容

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

動態加載腳本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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) {}
}

返回按ID檢索的元素對象

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

跨瀏覽器綁定事件

1
2
3
4
5
6
7
8
9
10
11
12
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;
     }
}

跨瀏覽器刪除事件

1
2
3
4
5
6
7
8
9
10
11
12
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;
     }
}

爲元素添加on方法

1
2
3
4
5
6
7
8
Element.prototype.on = Element.prototype.addEventListener;
 
NodeList.prototype.on =  function (event, fn) {、 [][ 'forEach' ].call( this ,
     function (el) {
         el.on(event, fn);
     });
     return  this ;
};

爲元素添加trigger方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 ;
};

檢驗URL連接是否有效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 );
         }
     }
}

格式化CSS樣式代碼

1
2
3
4
5
6
7
8
9
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;
}

壓縮CSS樣式代碼

1
2
3
4
5
6
7
8
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];
}

獲取當前路徑

1
2
3
4
5
6
var  currentPageUrl =  "" ;
if  ( typeof  this .href ===  "undefined" ) {
     currentPageUrl = document.location.toString().toLowerCase();
else  {
     currentPageUrl =  this .href.toString().toLowerCase();
}

判斷是否移動設備

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}

判斷是否移動設備訪問

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

判斷是否蘋果移動設備訪問

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

判斷是否安卓移動設備訪問

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

判斷是否Touch屏幕

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

判斷是否打開視窗

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

獲取移動設備初始化大小

1
2
3
4
5
6
7
8
9
10
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;
}

獲取移動設備最大化大小

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
     }
}

獲取移動設備屏幕寬度

1
2
3
4
5
6
7
8
9
10
11
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;
}

完美判斷是否爲網址

1
2
3
4
5
6
7
8
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 ;
     }
}

getElementsByClassName

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
}

獲取頁面高度

1
2
3
4
5
6
7
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);
}

獲取頁面scrollLeft

1
2
3
4
function  getPageScrollLeft(){
     var  a = document;    
     return  a.documentElement.scrollLeft || a.body.scrollLeft;
}

獲取頁面可視寬度

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

獲取頁面寬度

1
2
3
4
5
6
7
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);
}

獲取頁面scrollTop

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

獲取頁面可視高度

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

去掉url前綴

1
2
3
4
5
6
7
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;
}

隨機數時間戳

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

全角半角轉換

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//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( "" );
}

確認是否鍵盤有效輸入值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 ;
}

獲取網頁被捲去的位置

1
2
3
4
5
6
7
8
9
function  getScrollXY() {
     return  document.body.scrollTop ? {
         x: document.body.scrollLeft,
         y: document.body.scrollTop
     }: {
         x: document.documentElement.scrollLeft,
         y: document.documentElement.scrollTop
     }
}

日期格式化函數+調用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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  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" ));

時間個性化輸出功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
     一、< 60s, 顯示爲「剛剛」
     二、>= 1min && < 60 min, 顯示與當前時間差「XX分鐘前」
     三、>= 60min && < 1day, 顯示與當前時間差「今天 XX:XX」
     四、>= 1day && < 1year, 顯示日期「XX月XX日 XX:XX」
     五、>= 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;
}

解決offsetX兼容性問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 針對火狐不支持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;
}

經常使用的正則表達式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//正整數
/ ^[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]+$"

返回頂部的通用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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' );

得到URL中GET參數值

1
2
3
4
5
6
7
8
9
10
11
// 用法:若是地址是 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];
}

打開一個窗體通用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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();
     }
}

提取頁面代碼中全部網址

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

清除相同的數組

1
2
3
4
5
6
7
8
9
10
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
};

按字母排序,對每行進行數組排序

1
2
3
4
5
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;
}

字符串反序

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

清除html代碼中的腳本

1
2
3
4
5
6
7
8
9
10
11
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);
     }
}

動態執行VBScript腳本

1
2
3
4
5
6
7
8
9
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);
     }
}

金額大寫轉換函數

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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;
}

resize的操做

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
( 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();
})();

實現base64解碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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;
}

實現utf8解碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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( '' );
}

獲取窗體可見範圍的寬與高

1
2
3
4
5
6
7
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);
}

斷鼠標是否移出事件

1
2
3
4
5
6
7
8
9
10
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);
}

半角轉換爲全角函數

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
}

全角轉換爲半角函數

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
}
相關文章
相關標籤/搜索