JS常用自定義函數總結
2、原生JavaScript獲取域名主機
3、原生JavaScript清除空格
4、原生JavaScript替換全部
5、原生JavaScript轉義html標簽
6、原生JavaScript還原html標簽
7、原生JavaScript時間日期格式轉換
8、原生JavaScript判斷是否為數字類型
9、原生JavaScript設置cookie值
10、原生JavaScript獲取cookie值
11、原生JavaScript加入收藏夾
12、原生JavaScript設為首頁
13、原生JavaScript判斷IE6
14、原生JavaScript加載樣式文件
15、原生JavaScript返回腳本內容
16、原生JavaScript清除腳本內容
17、原生JavaScript動態加載腳本文件
18、原生JavaScript返回按ID檢索的元素對象
19、原生JavaScript返回瀏覽器版本內容
20、原生JavaScript元素顯示的通用方法
21、原生JavaScript中有insertBefore方法,可惜卻沒有insertAfter方法?用如下函數實現
22、原生JavaScript中兼容瀏覽器綁定元素事件
23、原生JavaScript光標停在文字的后面,文本框獲得焦點時調用
24、原生JavaScript檢驗URL鏈接是否有效
25、原生JavaScript格式化CSS樣式代碼
26、原生JavaScript壓縮CSS樣式代碼
27、原生JavaScript獲取當前路徑
28、原生JavaScriptIP轉成整型
29、原生JavaScript整型解析為IP地址
30、原生JavaScript實現checkbox全選與全不選
31、原生JavaScript判斷是否移動設備
32、原生JavaScript判斷是否移動設備訪問
33、原生JavaScript判斷是否蘋果移動設備訪問
34、原生JavaScript判斷是否安卓移動設備訪問
35、原生JavaScript判斷是否Touch屏幕
36、原生JavaScript判斷是否在安卓上的谷歌瀏覽器
37、原生JavaScript判斷是否打開視窗
38、原生JavaScript獲取移動設備初始化大小
39、原生JavaScript獲取移動設備最大化大小
40、原生JavaScript獲取移動設備屏幕寬度
41、原生JavaScript完美判斷是否為網址
42、原生JavaScript根據樣式名稱檢索元素對象
43、原生JavaScript判斷是否以某個字符串開頭
44、原生JavaScript判斷是否以某個字符串結束
45、原生JavaScript返回IE瀏覽器的版本號
46、原生JavaScript獲取頁面高度
47、原生JavaScript獲取頁面scrollLeft
48、原生JavaScript獲取頁面可視寬度
49、原生JavaScript獲取頁面寬度
50、原生JavaScript郵箱判斷
51、原生JavaScript電話號碼判斷
52、原生JavaScript判斷身份證號
53、原生JavaScript對class進行操作:添加類名、判斷類名是否存在等
/** * 字符串長度截取 params: str:字符串 length:長度 */ function cutstr(str, length) { var temp; var icount = 0; var patrn = /[^\x00-\xff]/; var 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 + "..."; } /** * 獲取域名主機 params: url:域名 */ function getHost(url) { var host = "null"; if (typeof url == "undefined" || null == url) { url = window.location.href; } var regex = /^\w+\:\/\/([^\/]*).*/; var match = url.match(regex); if (typeof match != "undefined" && null != match) { host = match[1]; } return host; } /** * 清除空格 為String 對象添加方法 trim() 以此兼容不支持此方法的瀏覽器 */ if (!String.prototype.trim) { String.prototype.trim = function() { var reExtraSpace = /^\s*(.*?)\s+$/; return this.replace(reExtraSpace, "$1"); }; } /** * 替換全部,多種方式的替換規則 為String 對象添加方法 replaceAll 兼容瀏覽器 * * 第三參數 修飾符 描述 i 執行對大小寫不敏感的匹配。 g 執行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。 m 執行多行匹配。 */ if (!String.prototype.replaceAll) { String.prototype.replaceAll = function(s1, s2, type) { return this.replace(new RegExp(s1, type), s2); }; } /** * 轉義html標簽 */ function htmlEncode(text) { return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>'); } /** * 還原html標簽 */ function htmlDecode(text) { return text.replace(/&/g, '&').replace(/"/g, '\"').replace( /</g, '<').replace(/>/g, '>'); } /** * 時間日期格式轉換 (按需更改,是否調用原方法, 還是重寫) */ if (!Date.prototye.format && !Date.prototype.Format) { 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; }; } /** * 判斷是否為數字類型 */ function isDigit(value) { var patrn = /^[0-9]*$/; if (patrn.exec(value) == null || value == "") { return false; } else { return true; } } /** * 設置cookie值 escape(str) 對值進行編碼 unescape(str)進行解碼 (ECMAScript v3 反對使用該方法,應用使用 * decodeURI() 和 decodeURIComponent() 替代它。) * * param: * * name:名稱 * * value:名稱對應值 * * path:為了控制cookie可以訪問的目錄 例: path=/shop";就表示當前cookie僅能在shop目錄下使用(url地址)。 * * expires:過期時間 F * domain : 指定可訪問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=sicd.com;"; } /** * 獲取cookie值 unescape()不推薦使用 用 decodeURI() * */ function getCookie(name) { var arr = document.cookie .match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; } /** * 加入收藏夾 */ function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle); } catch (e) { try { window.sidebar.addPanel(sTitle, sURL, ""); } catch (e) { alert("加入收藏失敗,請使用Ctrl+D進行添加"); } } } /** * 設為首頁 */ function setHomepage() { if (document.all) { document.body.style.behavior = 'url(#default#homepage)'; document.body.setHomePage('http://***'); } 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://***'); } } /** * 判斷IE6 設置背景圖片緩存解決閃爍問題 (ie6默認背景圖片不緩存) * * document.execCommand() 用法 想了解的童鞋請訪問: * http://www.cnblogs.com/sicd/p/4134641.html 記得點個贊喲 ^_^ */ var ua = navigator.userAgent.toLowerCase(); var isIE6 = ua.indexOf("msie 6") > -1; if (isIE6) { try { document.execCommand("BackgroundImageCache", false, true); } catch (e) { } } /** * 動態加載 CSS 樣式文件 */ 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); } } /** * 返回腳本內容 */ 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; } /** * 清除腳本內容 */ function stripscript(s) { return s.replace(/<script.*?>.*?<\/script>/ig, ''); } /** * 動態加載腳本文件 */ 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檢索的元素對象 */ try { if (typeof (eval('$')) == "function") { } else { function $(id) { return !id ? null : document.getElementById(id); } } } catch (e) { function $(id) { return !id ? null : document.getElementById(id); } } /** * 返回瀏覽器版本 * * 返回一個對象,對象屬性:type,version */ function getExplorerInfo() { var explorer = window.navigator.userAgent.toLowerCase(); // ie if (explorer.indexOf("msie") >= 0) { var ver = explorer.match(/msie ([\d.]+)/)[1]; return { type : "IE", version : ver }; } // firefox else if (explorer.indexOf("firefox") >= 0) { var ver = explorer.match(/firefox\/([\d.]+)/)[1]; return { type : "Firefox", version : ver }; } // Chrome else if (explorer.indexOf("chrome") >= 0) { var ver = explorer.match(/chrome\/([\d.]+)/)[1]; return { type : "Chrome", version : ver }; } // Opera else if (explorer.indexOf("opera") >= 0) { var ver = explorer.match(/opera.([\d.]+)/)[1]; return { type : "Opera", version : ver }; } // Safari else if (explorer.indexOf("Safari") >= 0) { var ver = explorer.match(/version\/([\d.]+)/)[1]; return { type : "Safari", version : ver }; } } /** * 顯示元素 待驗證 visibility hideen 會隱藏元素,但是會占用作用域 */ // function $(id) { // return !id ? null : document.getElementById(id); // } function display(id) { var obj = $(id); if (obj.style.visibility) { obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible'; } else { obj.style.display = obj.style.display == '' ? 'none' : ''; } } /** * 與insertBefore方法(已存在)對應的insertAfter方法 * * */ function insertAfter(newChild, refChild) { var parElem = refChild.parentNode; if (parElem.lastChild == refChild) { refChild.appendChild(newChild); } else { parElem.insertBefore(newChild, refChild.nextSibling); } } /** * 兼容瀏覽器綁定元素事件 * * obj:元素 * * evt:時間名稱 * * fn:觸發函數 * */ function addEventSamp(obj, evt, fn) { if (obj.addEventListener) { obj.addEventListener(evt, fn, false); } else if (obj.attachEvent) { obj.attachEvent('on' + evt, fn); } } /** * 光標停在文字的后面,文本框獲得焦點時調用 */ function focusLast() { var e = event.srcElement; var r = e.createTextRange(); r.moveStart('character', e.value.length); r.collapse(true); r.select(); } /** * 檢驗URL鏈接是否有效 * * .Open("GET",URL, false) true:異步;false:同步 */ function getUrlState(URL) { var suc = false; 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) { suc = true; } else { suc = false; } } else { suc = false; } } return suc; } /** * 格式化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; } /** * 壓縮CSS樣式代碼 */ function yasuoCss(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]; } /** * 獲取當前路徑 */ function getCurrentPageUrl() { var currentPageUrl = ""; if (typeof this.href === "undefined") { currentPageUrl = document.location.toString().toLowerCase(); } else { currentPageUrl = this.href.toString().toLowerCase(); } return currentPageUrl; } /** * ip 轉 整型 */ function _ip2int(ip) { var num = 0; ip = ip.split("."); num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]); num = num >>> 0; return num; } /** * 整型解析為IP地址 */ function _int2iP(num) { var str; var tt = new Array(); tt[0] = (num >>> 24) >>> 0; tt[1] = ((num << 8) >>> 24) >>> 0; tt[2] = (num << 16) >>> 24; tt[3] = (num << 24) >>> 24; str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]); return str; } /** * 實現checkbox全選與全不選 */ function checkAll(selectAllBoxId, childBoxsId) { var selectall = document.getElementById(selectAllBoxId); var allbox = document.getElementsByName(childBoxsId); if (selectall.checked) { for ( var i = 0; i < allbox.length; i++) { allbox[i].checked = true; } } else { for ( var i = 0; i < allbox.length; i++) { allbox[i].checked = false; } } } /** * 判斷是否移動設備 */ 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; } /** * 判斷是否移動設備訪問 */ function isMobileUserAgent() { return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i .test(window.navigator.userAgent.toLowerCase())); } /** * 判斷是否蘋果移動設備訪問 */ function isAppleMobileDevice() { return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent .toLowerCase())); } /** * 判斷是否安卓移動設備訪問 */ function isAndroidMobileDevice() { return (/android/i.test(navigator.userAgent.toLowerCase())); } /** * 判斷是否Touch屏幕 */ function isTouchScreen() { return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); } /** * 判斷是否在安卓上的谷歌瀏覽器 */ function isNewChromeOnAndroid() { if (this.isAndroidMobileDevice()) { var userAgent = navigator.userAgent.toLowerCase(); if ((/chrome/i.test(userAgent))) { var parts = userAgent.split('chrome/'); var fullVersionString = parts[1].split(" ")[0]; var versionString = fullVersionString.split('.')[0]; var version = parseInt(versionString); if (version >= 27) { return true; } } } return false; } /** * 判斷是否打開視窗 */ function isViewportOpen() { return !!document.getElementById('wixMobileViewport'); } /** * 獲取移動設備初始化大小 */ 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; } /** * 獲取移動設備最大化大小 */ 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; } } /** * 獲取移動設備屏幕寬度 */ 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; } /** * 完美判斷是否為網址 */ 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; } } /** * 根據樣式名稱檢索元素對象 */ function getElementsByClassName(name) { var tags = document.getElementsByTagName('*') || document.all; var els = []; for (var i = 0; i < tags.length; i++) { if (tags[i].className) { var cs = tags[i].className.split(' '); for (var j = 0; j < cs.length; j++) { if (name == cs[j]) { els.push(tags[i]); break; } } } } return els; } /** * 判斷是否以某個字符串開頭 */ if(!String.prototype.startWith){ String.prototype.startWith = function (s) { return this.indexOf(s) == 0; }; } /** * 判斷是否以某個字符串結束 */ if(!String.prototype.endWith){ String.prototype.endWith = function (s) { var d = this.length - s.length; return (d >= 0 && this.lastIndexOf(s) == d); }; } /** * 返回IE瀏覽器的版本號 */ function getIE(){ if (window.ActiveXObject){ var v = navigator.userAgent.match(/MSIE ([^;]+)/)[1]; return parseFloat(v.substring(0, v.indexOf("."))); } return false; } /** * 獲取頁面高度 */ 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 */ function getPageScrollLeft(){ var a = document; return a.documentElement.scrollLeft || a.body.scrollLeft; } /** * 獲取頁面寬度 */ 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 */ function getPageScrollTop(){ var a = document; return a.documentElement.scrollTop || a.body.scrollTop; } /** * 獲取頁面可視高度 */ function getPageViewHeight() { var d = document, a = d.compatMode == "BackCompat" ? d.body : d.documentElement; return a.clientHeight; } /*****************************補充 ********************************************/ //刪除cookies function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
//電子郵箱判斷 function testEmail(email){ var email_reg = new RegExp(/^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$/); if(!email_reg.test(email)){ return "no"; } return "yes"; } //手機號碼 function testMobile(mobile){ var mobile_reg = new RegExp(/^0{0,1}1[0-9]{10}$/); if(!mobile_reg.test(mobile)){ return "no"; } return "yes"; } //身份證 function testIDCard(str){ var IDCardReg = new RegExp(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/); if(!IDCardReg.test(str)){ return "no"; } return "yes"; } //定義一個函數,用來向一個元素添加指定的class屬性值 /* * 參數: * obj 要添加class屬性的元素 * cn 要添加的class值 */ function addClass(obj,cn){ //檢查 if(!hasClass(obj,cn)) obj.className+=" "+cn; }; /* * 判斷一個元素中是否含有指定的class屬性值 * 如果有該CLASS,則返回true,沒有返回false */ function hasClass(obj,cn){ //var reg=/\bb2\b/; var reg=new RegExp("\\b"+cn+"\\b"); //判斷obj中有沒有 cn class return reg.test(obj.className); }; function removeClass(obj,cn){ // var reg=new RegExp("\\b"+cn+"\\b"); //刪除class obj.className=obj.className.replace(reg,""); }; /* * toggleClass可以用來切換一個類 * 如果元素中具有該類,則刪除 * 如果元素中沒有該類,則添加 */ function toggleClass(obj,cn){ if(hasClass(obj,cn)){ removeClass(obj,cn); } else{ addClass(obj,cn); } };