常用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函数与原型功能收藏(必看篇)全部内容了,希望大家多多支持毛票票~