常用Javascript函数与原型功能收藏(必看篇)
如下所示:
//重复字符串 String.prototype.repeat=function(n){ returnnewArray(n+1).join(this); } //替换全部 String.prototype.replaceAll=function(str1,str2){ returnthis.replace(newRegExp(str1,"gm"),str2); } //清除空格 String.prototype.trim=function(){ returnthis.replace(/^\s*(.*?)\s+$/,"$1"); } //计算数组中的最大值 Array.prototype.max=function(){ returnMath.max.apply({},this); } //计算数组中的最小值 Array.prototype.min=function(){ returnMath.min.apply({},this); } //复制数组 Array.prototype.copy=function(){ return[].concat(this); }; //去除数组中指定元素,只能去除一个,如果想多个,之前先用unique处理 Array.prototype.remove=function(value){ for(vari=0,len=this.length;i<len;i++){ if(this[i]==value){ this.splice(i,1); break; } } returnthis; } //判断数组中是否存在指定元素,返回索引值 Array.prototype.inArray=function(value){ varindex=-1,key; for(keyinthis){ if(this[key]==value){ index=key; break; } } returnindex; } //去除数组中的重复元素 Array.prototype.unique=function(){ varkey,ret=[]; for(keyinthis){ if(ret.inArray(this[key])<0){ ret.push(this[key]); } } returnret; } //检测是否已经安装flash,检测flash的版本 varflashVersion=(function(){ varversion; try{ version=navigator.plugins['ShockwaveFlash']; version=version.description; }catch(ex){ try{ version=newActiveXObject('ShockwaveFlash.ShockwaveFlash') .GetVariable('$version'); }catch(ex2){ version='0.0'; } } version=version.match(/\d+/g); returnparseFloat(version[0]+'.'+version[1],10); })(); //检测是否支持transition varsupportTransition=(function(){ vars=document.createElement('p').style, r='transition'ins|| 'WebkitTransition'ins|| 'MozTransition'ins|| 'msTransition'ins|| 'OTransition'ins; s=null; returnr; })(); //判断浏览器是否支持图片的base64 varisSupportBase64=(function(){ vardata=newImage(); varsupport=true; data.onload=data.onerror=function(){ if(this.width!=1||this.height!=1){ support=false; } returnsupport; }; data.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; })(); //首字母大写 functionucfirst(str){ returnstr.charAt(0).toUpperCase()+str.slice(1); } //清除左空格 functionltrim(str){ returnstr.replace(/^(\s*|*)/,""); } //清除右空格 functionrtrim(str){ returnstr.replace(/(\s*|*)$/,""); } //设置Cookie值 functionsetCookie(name,value,hours,path,domain){ vard=newDate(); varoffset=8; varutc=d.getTime()+(d.getTimezoneOffset()*60000); varnd=utc+(3600000*offset); varexpire=newDate(nd); expire.setTime(expire.getTime()+hours*60*60*1000); varpath=path||""; vardomain=domain||""; document.cookie=name+"="+escape(value)+";path="+path+";expires="+expire.toGMTString()+";domain="+domain+";" } //获取Cookie值 functiongetCookie(name){ vararr=document.cookie.match(newRegExp("(^|)"+name+"=([^;]*)(;|$)")); if(arr!=null){ returnunescape(arr[2]); } returnnull; } //删除Cookie值 functionremoveCookie(name){ setCookie(name,"",-1); } //生成范围随机数 functionrand(n,m){ returnMath.random()*(m-n)+n; } //加入收藏夹 functionaddFavorite(url,title){ try{ window.external.addFavorite(url,title); }catch(e){ try{ window.sidebar.addPanel(title,url,""); }catch(e){ alert("加入收藏失败,请使用Ctrl+D进行添加"); } } } //设为首页 functionsetHomepage(url){ if(document.all){ document.body.style.behavior='url(#default#homepage)'; document.body.setHomePage(url); }elseif(window.sidebar){ if(window.netscape){ try{ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }catch(e){ alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入about:config,然后将项signed.applets.codebase_principal_support值该为true"); } } varprefs=Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); prefs.setCharPref('browser.startup.homepage',url); } } //加载样式文件 functionloadStyle(url){ try{ document.createStyleSheet(url); }catch(e){ varcssLink=document.createElement('link'); cssLink.rel='stylesheet'; cssLink.type='text/css'; cssLink.href=url; varhead=document.getElementsByTagName('head')[0]; head.appendChild(cssLink) } } //清除脚本内容 functionstripscript(str){ returnstr.replace(/<script.*?>.*?<\/script>/ig,''); } //检验URL链接是否有效 functiongetUrlState(url){ varxmlhttp=newActiveXObject("microsoft.xmlhttp"); xmlhttp.open("GET",url,false); try{ xmlhttp.send(); }catch(e){ }finally{ varresult=xmlhttp.responseText; if(result){ if(xmlhttp.status==200){ returntrue; }else{ returnfalse; } }else{ returnfalse; } } } //格式化CSS代码 functionformatCss(str){ str=str.replace(/\s*([\{\}\:\;\,])\s*/g,"$1"); str=str.replace(/;\s*;/g,";");//清除连续分号 str=str.replace(/\,[\s\.\#\d]*{/g,"{"); str=str.replace(/([^\s])\{([^\s])/g,"$1{\n\t$2"); str=str.replace(/([^\s])\}([^\n]*)/g,"$1\n}\n$2"); str=str.replace(/([^\s]);([^\s\}])/g,"$1;\n\t$2"); returnstr; } //压缩CSS代码 functioncompressCss(str){ str=str.replace(/\/\*(.|\n)*?\*\//g,"");//删除注释 str=str.replace(/\s*([\{\}\:\;\,])\s*/g,"$1"); str=str.replace(/\,[\s\.\#\d]*\{/g,"{");//容错处理 str=str.replace(/;\s*;/g,";");//清除连续分号 str=str.match(/^\s*(\S+(\s+\S+)*)\s*$/);//去掉首尾空白 return(str==null)?"":s[1]; } //getElementsByClassName functiongetElementsByClassName(name,context){ varcontext=context||document; if(context.getElementsByClassName){ returncontext.getElementsByClassName(name); } varnodes=context.getElementsByTagName("*"),nodesLength=nodes.length,ret=[]; for(vari=0;i<nodesLength;i++){ varclassName=nodes[i].className; if(nodes[i].nodeType==1&&className){ varclasses=className.split(''); for(varj=0;j<classes.length;j++){ if(name==classes[j]){ ret.push(nodes[i]); break } } } } returnret; } //获取页面高度 functiongetPageHeight(){ vardoc=document; varrot=doc.compatMode=="BackCompat"?doc.body:doc.documentElement; returnMath.max(doc.documentElement.scrollHeight,doc.body.scrollHeight,rot.clientHeight); } //获取页面scrollLeft functiongetPageScrollLeft(){ vardoc=document; returndoc.documentElement.scrollLeft||doc.body.scrollLeft; } //获取页面可视宽度 functiongetPageViewWidth(){ vardoc=document; varrot=doc.compatMode=="BackCompat"?doc.body:doc.documentElement; returnrot.clientWidth; } //获取页面宽度 functiongetPageWidth(){ vardoc=document; varrot=doc.compatMode=="BackCompat"?doc.body:doc.documentElement; returnMath.max(doc.documentElement.scrollWidth,doc.body.scrollWidth,rot.clientWidth); } //获取页面scrollTop functiongetPageScrollTop(){ vardoc=document; returndoc.documentElement.scrollTop||doc.body.scrollTop; } //获取页面可视高度 functiongetPageViewHeight(){ vardoc=document; varrot=doc.compatMode=="BackCompat"?doc.body:doc.documentElement; returnrot.clientHeight; } //获取网页被卷去的位置 functiongetScrollXY(){ returndocument.body.scrollTop?{ x:document.body.scrollLeft, y:document.body.scrollTop }:{ x:document.documentElement.scrollLeft, y:document.documentElement.scrollTop } } //获取元素的样式值 functiongetStyle(elem,name){ if(elem.style[name]){ returnelem.style[name]; }elseif(elem.currentStyle){ returnelem.currentStyle[name]; }elseif(document.defaultView&&document.defaultView.getComputedStyle){ vars=document.defaultView.getComputedStyle(elem,""); returns&&s.getPropertyValue(name); }else{ returnnull; } } //获取元素相对于这个页面的X坐标 functionpageX(elem){ returnelem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft; } //获取元素相对于这个页面的Y坐标 functionpageY(elem){ returnelem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop; } //获取元素相对于父元素的X坐标 functionparentX(elem){ returnelem.parentNode==elem.offsetParent?elem.offsetLeft:pageX(elem)-pageX(elem.parentNode); } //获取元素相对于父元素的Y坐标 functionparentY(elem){ returnelem.parentNode==elem.offsetParent?elem.offsetTop:pageY(elem)-pageY(elem.parentNode); } //获取使用CSS定位的元素的X坐标 functionposX(elem){ returnparseInt(getStyle(elem,"left")); } //获取使用CSS定位的元素的Y坐标 functionposY(elem){ returnparseInt(getStyle(elem,"top")); } //设置元素X位置 functionsetX(elem,pos){ elem.style.left=pos+"px"; } //设置元素Y位置 functionsetY(elem,pos){ elem.style.top=pos+"px"; } //增加元素X坐标 functionaddX(elem,pos){ set(elem,(posX(elem)+pos)); } //增加元素Y坐标 functionaddY(elem,pos){ set(elem,(posY(elem)+pos)); } //获取元素使用CSS控制大小的高度 functiongetHeight(elem){ returnparseInt(getStyle(elem,"height")); } //获取元素使用CSS控制大小的宽度 functiongetWidth(elem){ returnparseInt(getStyle(elem,"width")); } //设置透明度 functionsetOpacity(elem,num){ if(elem.filters){ elem.style.filter="alpha(opacity="+num+")"; }else{ elem.style.opacity=num/100; } } //获取鼠标光标相对于整个页面的X位置 functiongetX(e){ e=e||window.event; returne.pageX||e.clientX+document.body.scrollLeft; } //获取鼠标光标相对于整个页面的Y位置 functiongetY(e){ e=e||window.event; returne.pageY||e.clientY+document.body.scrollTop; } //获取鼠标光标相对于当前元素的X位置 functiongetElementX(e){ return(e&&e.layerX)||window.event.offsetX; } //获取鼠标光标相对于当前元素的Y位置 functiongetElementY(e){ return(e&&e.layerY)||window.event.offsetY; } //获取滚动条的X位置 functionscrollX(){ varde=document.documentElement; returnself.pageXOffset||(de&&de.scrollLeft)||document.body.scrollLeft; } //获取滚动条的Y位置 functionscrollY(){ varde=document.documentElement; returnself.pageYOffset||(de&&de.scrollTop)||document.body.scrollTop; } //确认是否键盘有效输入值 functioncheckKey(iKey){ if(iKey==32||iKey==229){returntrue;}/*空格和异常*/ if(iKey>47&&iKey<58){returntrue;}/*数字*/ if(iKey>64&&iKey<91){returntrue;}/*字母*/ if(iKey>95&&iKey<108){returntrue;}/*数字键盘1*/ if(iKey>108&&iKey<112){returntrue;}/*数字键盘2*/ if(iKey>185&&iKey<193){returntrue;}/*符号1*/ if(iKey>218&&iKey<223){returntrue;}/*符号2*/ returnfalse; } //获得URL中GET参数值 functiongetParams(){ varqueryStr=window.location.href.split("?"); varparams=[]; if(queryStr[1]){ vargets=queryStr[1].split("&"); for(vari=0;i<gets.length;i++){ temp=gets.split("="); params[temp[0]]=temp[1]; } } returnparams; } //字符串反序 functionstrReverse(text){ returntext.split('').reverse().join(''); } //HTML实体 functionhtmlEncode(str){ vars=""; if(str.length==0)return""; s=str.replace(/\&/g,"&"); s=s.replace(/</g,"<"); s=s.replace(/>/g,">"); s=s.replace(/\'/g,"'"); s=s.replace(/\"/g,"&qout;"); returns; } //HTML还原 functionhtmlDecode(str){ vars=""; if(str.length==0)return""; s=str.replace(/&/g,"&"); s=s.replace(/</g,"<"); s=s.replace(/>/g,">"); s=s.replace(/'/g,"\'"); s=s.replace(/&qout;/g,"\""); returns; } //克隆 functionclone(obj){ varret; switch(typeofobj){ case'undefined': break; case'string': ret=obj+''; break; case'number': ret=obj-0; break; case'boolean': ret=obj; break; case'object': if(obj===null){ ret=null; }else{ if(objinstanceofArray){ ret=[]; for(vari=0,len=obj.length;i<len;i++){ ret.push(clone(obj[i])); } }else{ ret={}; for(varkinobj){ ret[k]=clone(obj[k]); } } } break; default: ret=obj; break; } returnret; } //检测变量是否为email格式 functionisEmail(mail){ if(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(mail)){ returntrue; } returnfalse; } //验证身份证号码 functionisIdenCode(code){ varcity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}; vartip=""; varpass=true; if(!code||!/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){ tip="身份证号格式错误"; pass=false; }elseif(!city[code.substr(0,2)]){ tip="地址编码错误"; pass=false; }else{ //18位身份证需要验证最后一位校验位 if(code.length==18){ code=code.split(''); //∑(ai×Wi)(mod11) //加权因子 varfactor=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; //校验位 varparity=[1,0,'X',9,8,7,6,5,4,3,2]; varsum=0; varai=0; varwi=0; for(vari=0;i<17;i++){ ai=code[i]; wi=factor[i]; sum+=ai*wi; } varlast=parity[sum%11]; if(parity[sum%11]!=code[17]){ tip="校验位错误"; pass=false; } } } returnpass; } //检测变量是否为小数 functionisDecimal(dec){ if(dec.match(/^-?\d+(\.\d+)?$/g)==null){ returnfalse; } returntrue; } //检测变量是否为整型 functionisInteger(num){ if(num.match(/^[-+]?\d*$/)==null){ returnfalse; } returntrue; } //检测变量是否为时间格式 functioncheckTime(str){ vartime=str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if(time==null){ returnfalse; } if(time[1]>24||time[3]>60||time[4]>60){ returnfalse } returntrue; } //检测变量类型是否为日期格式 functioncheckDate(str){ vardate=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(date==null){ returnfalse; } vard=newDate(r[1],r[3]-1,r[4]); return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } //检测变量是否为长日期格式 functioncheckDateTime(str){ varreg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/; vardt=str.match(reg); if(dt==null){ returnfalse; } vard=newDate(dt[1],dt[3]-1,dt[4],dt[5],dt[6],dt[7]); return(d.getFullYear()==dt[1]&&(d.getMonth()+1)==dt[3]&&d.getDate()==dt[4]&&d.getHours()==dt[5]&&d.getMinutes()==dt[6]&&d.getSeconds()==dt[7]); } //检测变量是否为未定义 functionisUndefined(val){ returntypeofval==='undefined'; } //检测变量是否为定义 functionisDefined(val){ returntypeofval!=='undefined'; } //检测变量类型是否为对象 functionisObject(val){ returnval!==null&&typeofval==='object'; } //检测变量类型是否为空对象 functionisBlankObject(val){ returnval!==null&&typeofval==='object'&&!Object.getPrototypeOf(val); } //检测变量类型是否为字符串 functionisString(val){ returntypeofval==='string'; } //检测变量类型是否为数字 functionisNumber(val){ returntypeofval==='number'; } //检测变量类型是否为日期 functionisDate(val){ returntoString.call(val)==='[objectDate]'; } //检测变量类型是否为函数 functionisFunction(val){ returntypeofval==='function'; } //检测变量类型是否为正则表达式 functionisRegExp(val){ returntoString.call(val)==='[objectRegExp]'; } //检测变量是否window窗体对象 functionisWindow(obj){ returnobj&&obj.window===obj; } //检测变量类型是否为布尔 functionisBoolean(val){ returntypeofval==='boolean'; } //检测变量类型是否为文件对象 functionisFile(obj){ returntoString.call(obj)==='[objectFile]'; } //检测变量类型是否为表单对象 functionisFormData(obj){ returntoString.call(obj)==='[objectFormData]'; } //检测变量类型是否为二进制对象 functionisBlob(obj){ returntoString.call(obj)==='[objectBlob]'; } //转全角字符 functiontoDBC(str){ varresult=""; varlen=str.length; for(vari=0;i<len;i++){ varcode=str.charCodeAt(i); //全角与半角相差(除空格外):65248(十进制) code=(code>=0x0021&&code<=0x007E)?(code+65248):code; //处理空格 code=(code==0x0020)?0x03000:code; result+=String.fromCharCode(code); } returnresult; } //转半角字符 functiontoSBC(str){ varresult=""; varlen=str.length; for(vari=0;i<len;i++){ varcode=str.charCodeAt(i); //全角与半角相差(除空格外):65248(十进制) code=(code>=0xFF01&&code<=0xFF5E)?(code-65248):code; //处理空格 code=(code==0x03000)?0x0020:code; result+=String.fromCharCode(code); } returnresult; } //全角半角转换 //angle:0全到半,1半到全,其他不转化 functionchgAngle(str,angle){ if(typeofstr!="string"||str.length<=0||!(angle===0||angle==1)){ returnstr; } vari,len,ret=[],code; if(angle){ /*半->全*/ for(i=0,len=str.length;i<len;i++){ code=str.charCodeAt(i); if(code==32){ code=12288; }elseif(code<127){ code+=65248; } ret.push(String.fromCharCode(code)); } }else{ /*全->半*/ for(i=0,len=str.length;i<len;i++){ code=str.charCodeAt(i); if(code==12288){ code=32; }elseif(code>65280&&code<65375){ code-=65248; } ret.push(String.fromCharCode(code)); } } returnret.join(""); } //数据的本地化存储 functionmakeWebStorage(){ //IE用userdata实现,w3c浏览器本身支持 if(("localStorage"inwindow)){ varstore={ set:function(key,value){localStorage.setItem(key,value)}, get:function(key){returnlocalStorage.getItem(key)}, remove:function(key){returnlocalStorage.removeItem(key)} } }else{ varstore={ userData:null, name:location.hostname, init:function(){ if(!store.userData){ try{ store.userData=document.createElement('INPUT'); store.userData.type="hidden"; store.userData.style.display="none"; store.userData.addBehavior("#default#userData"); document.body.appendChild(store.userData); varexpires=newDate(); expires.setDate(expires.getDate()+365); store.userData.expires=expires.toUTCString(); }catch(e){ returnfalse; } } returntrue; }, setItem:function(key,value){ if(store.init()){ store.userData.load(store.name); store.userData.setAttribute(key,value); store.userData.save(store.name); } }, getItem:function(key){ if(store.init()){ store.userData.load(store.name); returnstore.userData.getAttribute(key); } }, remove:function(key){ if(store.init()){ store.userData.load(store.name); store.userData.removeAttribute(key); store.userData.save(store.name); } } }; } window.webStorage=store; } functionmakeSessionStorage(){ if(("sessionStorage"inwindow)){ varstore={ set:function(key,value){window.sessionStorage.setItem(key,value)}, get:function(key){returnwindow.sessionStorage.getItem(key)}, remove:function(key){returnwindow.sessionStorage.removeItem(key)} } }else{ varstore={ set:function(key,value){}, get:function(key){}, remove:function(key){} } } window.sessStorage=store; }
以上就是小编为大家带来的常用Javascript函数与原型功能收藏(必看篇)全部内容了,希望大家多多支持毛票票~