js 功能函数

本文介绍了一系列实用的 JavaScript 扩展函数,包括字符串操作、日期处理、数组增强及编码方式扩展等,帮助开发者提高编码效率。

javascript功能函数

//取得字符串的字节长度
String.prototype.LenB = function(){var arr=this.match(/[^/x00-/xff]/ig);return this.length+(arr==null?0:arr.length);}
//增加Left函数,从左向右取了符串,mode不为0,则判断汉字
String.prototype.Left = function(num,mode){if(!//d+/.test(num))return(this);var str = this.substr(0,num);if(!mode) return str;var n = str.LenB() - str.length;num = num - parseInt(n/2);return this.substr(0,num);}
//增加Right函数,从右向左取了符串,mode不为0,则判断汉字
String.prototype.Right = function(num,mode){if(!//d+/.test(num))return(this);var str = this.substr(this.length-num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(this.length-num);}
//判断str在字符串里出现的次数,不为0忽略大小于
String.prototype.GetCount = function(str,mode){return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");}
//去掉字符串两端的空格
String.prototype.Trim=function(){return this.replace(/(^/s*)|(/s*$)/g,"");}
//去掉字符串左端的空格
String.prototype.Ltrim = function(){return this.replace(/(^/s*)/g, "");}
//去掉字符串右端的空格
String.prototype.Rtrim = function(){return this.replace(/(/s*$)/g, "");}
//为字符串增加ASC函数,如果没有参数,则返回字符串第一个字符的ASCII码,如果指定参数all,则返回所有的字符串的ASCII码,并以分隔符分隔,如果不指定分隔符,则以空格分隔
//Asc(['all',['分隔符']]);
String.prototype.Asc=function(){
    if(!this.length)return null;
 var exStr=" ";
 if(arguments.length)
    {
       if(arguments[0].toLowerCase()=="all")
      if(arguments.length>1) exStr=arguments[1].toString();
       var asciistr="";
       for(i=0;i<this.length;i++)
        {
          execScript("asccode=asc('"+this.substr(i,1)+"')","vbs");
          asciistr+=asccode+exStr;
        }
       asciistr=asciistr.substr(0,asciistr.length-1);
    }
 else{execScript("asccode=asc('"+this+"')","vbs");asciistr=asccode;}
       return asciistr;
}
//让Numer型数据具有Chr方法,把数字转换为ASCII码字符, 如 var i=65; alert(i.Chr()); 输出结果为A
//要求为0-255间的数字,否则返回null
Number.prototype.Chr=function()
{
 if(isNaN(this)||this<0||this>255) return null;
 execScript("chrstr=chr('"+this+"')","vbs");
 return chrstr;
}
//返回数字指定位数的小数,如 var i=100.01234;alert(i.toFixed(2));结果100.01
if(!Number.prototype.toFixed) {
 Number.prototype.toFixed = function(n) {
  with(Math) return round(Number(this)*pow(10,n))/pow(10,n)
 }
}


/*
 function key(subKey,findWith) {
  var arr,reg = new RegExp("(^| |&)"+subKey+"=([^&]*)(&|$)");
  var findWith = findWith?findWith:document.cookie;
  if (arr =  findWith.match(reg))
   return unescape(arr[2]);
  else
   return null;
 }
}

function DateAdd(strInterval, NumDay, dtDate) {
 var dtTmp = new Date(dtDate);
 if (isNaN(dtTmp)) dtTmp = new Date();
 switch (strInterval) {
  case "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));
  case "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));
  case "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));
  case "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));
  case "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));
  case "m":return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  case "y":return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
 }
}
// DateDiff("m","2002/12/1 00:00:00","2004/12/1 00:00:00")
function DateDiff(strInterval, dtStart, dtEnd) {
 var dtStart = new Date(dtStart);
 if (isNaN(dtStart)) dtStart = new Date();
 var dtEnd = new Date(dtEnd);
 if (isNaN(dtEnd)) dtEnd = new Date();
 switch (strInterval) {
  case "s":return parseInt((dtEnd - dtStart) / 1000);
  case "n":return parseInt((dtEnd - dtStart) / 60000);
  case "h":return parseInt((dtEnd - dtStart) / 3600000);
  case "d":return parseInt((dtEnd - dtStart) / 86400000);
  case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
  case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
  case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
 }
}
// b2s("11新浪网!@#程序员_+}{:><")
function b2s(strng) {
 var Matches = strng.match(/[/x21-/x7e]/g);
 for (var i=0;i<Matches.length;i++) {
  strng = strng.replace(Matches[i],String.fromCharCode(Matches[i].charCodeAt (0)+65248))
 }
 return strng;
}
*/

// 数组扩展
// pop()
//push()
//
if (!Array.prototype.pop) {
 Array.prototype.pop = function() {
  var lastElement = this[this.length-1];
  this.length = Math.max(this.length-1,0);
  return lastElement;
 }
}

if (!Array.prototype.push) {
 Array.prototype.push = function() {
  for(var i=0;i<arguments.length;i++) {
   this[this.length]=arguments[i];
  }
  return this.length;
 }
}

if (!Array.prototype.shift) {
 Array.prototype.shift = function() {
  var firstElement = this[0];
  this.reverse();
  this.pop();
  this.reverse();
  return firstElement;
 }
}
if (!Array.prototype.splice) {
 Array.prototype.splice = function() {
  var start = arguments[0];
  var deleteCount = start+arguments[1];
  var deleteItem = this.slice(start,deleteCount);
  var beforeItem = this.slice(0,start);
  var afterItem = this.slice(deleteCount);
  this.length=beforeItem.length;
  var i;
  for (i=2;i<arguments.length;this[this.length]=arguments[i++]);
  for (i=0;i<afterItem.length;this[this.length]=afterItem[i++]);
  return deleteItem;
 }
}
if (!Array.prototype.unshift) {
 Array.prototype.unshift = function() {
  var arr = new Array();
  for (var i=0;i<arguments.length;arr[i]=arguments[i++]);
  arr = arr.concat(this);
  this.length = 0;
  for (i=0;i<arr.length;this[i]=arr[i++]);
 }
}

//编码方式扩展

function Encoding() //编码处理对象
{
  //encode(str) 进行 URLEncode编码,可以设置Cookie的值
  //decode(str) 进行 URLEncode解码,可以将Cookie的值 解码
  //encodeURI(str) 使用UTF-8标准URL格式编码
 this.version="1.0";
 this.copyright="笨笨熊";
    this.encode=function(str){
         var ret="";
         var strSpecial="!/"#$%&'()*+,/:;<=>?[]^`{|}~%";
         var tt= "";
         for(var i=0;
         i<str.length;
         i++){
             var chr = str.charAt(i);
             execScript("c=hex(asc('"+chr+"'))","vbs");
             tt += chr+":"+c+"n";
             if(parseInt("0x"+c) > 0x7f){
                 ret+="%"+c.slice(0,2)+"%"+c.slice(-2);

            } else{
                 if(chr==" ")
                 ret+="+";
                 else if(strSpecial.indexOf(chr)!=-1)
                 ret+="%"+c.toString(16);
                 else
                 ret+=chr;

            }

        }
         return ret;

    }
     this.decode=function(str){
         var ret="";
         for(var i=0;
         i<str.length;
         i++){
             var chr = str.charAt(i);
             if(chr == "+"){
                 ret+=" ";

            } else if(chr=="%"){
                 var asc = str.substring(i+1,i+3);

                 if(parseInt("0x"+asc)>0x7f){
      execScript("t=chr("+parseInt("0x"+asc+str.substring(i+4,i+6))+")","vbs");
                     ret+=t;
      i+=5;

                } else{
      execScript("t=chr("+parseInt("0x"+asc)+")","vbs");
                     ret+=t
                     i+=2;

                }

            } else{
                 ret+= chr;

            }

        }
         return ret;

    }
     this.encodeURI=function(str)
     {
         strs="";
         for(i=0;
         i<str.length;
         i++)strs+=toUtf8char(str.charCodeAt(i));
         return strs;

    }
     function toUtf8char(code)
     {
         var iByte=0;
         var i=0;
         result="";
         while(code>0x7f)
         {
             iByte=code%0x40;
             code=(code-iByte)/0x40;
             result="%"+(iByte|0x80).toString(16).toUpperCase()+result;
             i++;

        }
         prefix=[0x0,0xc0,0xe0,0xf0,0xf8,0xfc];
         if(i>prefix.length)
         {
             i=5;

        }
         result="%"+(code|prefix[i]).toString(16).toUpperCase()+result;

         return result;

    }

}

//document扩展
function getCookies(cookieName) //获取Cookice的值
{
     if(document.cookie.length==0) return "";
     var cookie=document.cookie.split(";");
     for(i=0;
     i<cookie.length;
     i++)
     if(cookie[i].indexOf("=")>0)
     if(cookie[i].substring(0,cookie[i].indexOf("=")).replace(" ","").toLowerCase()==cookieName.toLowerCase()) return cookie[i].substring(cookie[i].indexOf("=")+1);

}
function setCookies(cookieName,Value) //设置Cookice的值
{
     if(document.cookie.length==0) return "";
     var cookie=document.cookie.split(";");
     for(i=0;
     i<cookie.length;
     i++)
     if(cookie[i].indexOf("=")>0)
     if(cookie[i].substring(0,cookie[i].indexOf("=")).replace(" ","").toLowerCase()==cookieName.toLowerCase()) return cookie[i].substring(cookie[i].indexOf("=")+1);

}

function getQuery(name) //获取URL请求的参数
{
     var reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
     var r = location.search.substr(1).match(reg)
     if (r!=null) return unescape(r[2]);
}

function MsgBox() //让JS也有VB的MsgBox
{
    if(!arguments.length) return false;
    var prompt=arguments[0],btn,title;
    arguments[1]!=undefined?btn=arguments[1]:btn=0;
    arguments[2]!=undefined?title=arguments[2]:title="";
    execScript("myval=MsgBox ('"+prompt+"',"+btn+",'"+title+"')","vbs");
    return myval;
}

//MD5加密算法,已经压缩过了,因为里面的东西不用修改,用法简单不过,MD5('需要加密的字符串'),呵呵!
function MD5(sMessage){function RotateLeft(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits));}function AddUnsigned(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4)return(lResult^0x80000000^lX8^lY8);if(lX4|lY4){if(lResult&0x40000000)return(lResult^0xC0000000^lX8^lY8);else return(lResult^0x40000000^lX8^lY8);}else return(lResult^lX8^lY8);}function F(x,y,z){return(x&y)|((~x)&z);}function G(x,y,z){return(x&z)|(y&(~z));}function H(x,y,z){return(x^y^z);}function I(x,y,z){return(y^(x|(~z)));}function FF(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);}function GG(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);}function HH(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);}function II(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);}function ConvertToWordArray(sMessage){var lWordCount;var lMessageLength=sMessage.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount<lMessageLength){lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=(lWordArray[lWordCount]|(sMessage.charCodeAt(lByteCount)<<lBytePosition));lByteCount++;}lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=lWordArray[lWordCount]|(0x80<<lBytePosition);lWordArray[lNumberOfWords-2]=lMessageLength<<3;lWordArray[lNumberOfWords-1]=lMessageLength>>>29;return lWordArray;}function WordToHex(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);}return WordToHexValue;}var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7,S12=12,S13=17,S14=22;var S21=5,S22=9,S23=14,S24=20;var S31=4,S32=11,S33=16,S34=23;var S41=6,S42=10,S43=15,S44=21;x=ConvertToWordArray(sMessage);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k<x.length;k+=16){AA=a;BB=b;CC=c;DD=d;a=FF(a,b,c,d,x[k+0],S11,0xD76AA478);d=FF(d,a,b,c,x[k+1],S12,0xE8C7B756);c=FF(c,d,a,b,x[k+2],S13,0x242070DB);b=FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);a=FF(a,b,c,d,x[k+4],S11,0xF57C0FAF);d=FF(d,a,b,c,x[k+5],S12,0x4787C62A);c=FF(c,d,a,b,x[k+6],S13,0xA8304613);b=FF(b,c,d,a,x[k+7],S14,0xFD469501);a=FF(a,b,c,d,x[k+8],S11,0x698098D8);d=FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=FF(a,b,c,d,x[k+12],S11,0x6B901122);d=FF(d,a,b,c,x[k+13],S12,0xFD987193);c=FF(c,d,a,b,x[k+14],S13,0xA679438E);b=FF(b,c,d,a,x[k+15],S14,0x49B40821);a=GG(a,b,c,d,x[k+1],S21,0xF61E2562);d=GG(d,a,b,c,x[k+6],S22,0xC040B340);c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);a=GG(a,b,c,d,x[k+5],S21,0xD62F105D);d=GG(d,a,b,c,x[k+10],S22,0x2441453);c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=GG(b,c,d,a,x[k+4],S24,0xE7D3FBC8);a=GG(a,b,c,d,x[k+9],S21,0x21E1CDE6);d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=GG(c,d,a,b,x[k+3],S23,0xF4D50D87);b=GG(b,c,d,a,x[k+8],S24,0x455A14ED);a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);d=GG(d,a,b,c,x[k+2],S22,0xFCEFA3F8);c=GG(c,d,a,b,x[k+7],S23,0x676F02D9);b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=HH(a,b,c,d,x[k+5],S31,0xFFFA3942);d=HH(d,a,b,c,x[k+8],S32,0x8771F681);c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=HH(a,b,c,d,x[k+1],S31,0xA4BEEA44);d=HH(d,a,b,c,x[k+4],S32,0x4BDECFA9);c=HH(c,d,a,b,x[k+7],S33,0xF6BB4B60);b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);d=HH(d,a,b,c,x[k+0],S32,0xEAA127FA);c=HH(c,d,a,b,x[k+3],S33,0xD4EF3085);b=HH(b,c,d,a,x[k+6],S34,0x4881D05);a=HH(a,b,c,d,x[k+9],S31,0xD9D4D039);d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=HH(b,c,d,a,x[k+2],S34,0xC4AC5665);a=II(a,b,c,d,x[k+0],S41,0xF4292244);d=II(d,a,b,c,x[k+7],S42,0x432AFF97);c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=II(b,c,d,a,x[k+5],S44,0xFC93A039);a=II(a,b,c,d,x[k+12],S41,0x655B59C3);d=II(d,a,b,c,x[k+3],S42,0x8F0CCC92);c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=II(b,c,d,a,x[k+1],S44,0x85845DD1);a=II(a,b,c,d,x[k+8],S41,0x6FA87E4F);d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=II(c,d,a,b,x[k+6],S43,0xA3014314);b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=II(a,b,c,d,x[k+4],S41,0xF7537E82);d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=II(c,d,a,b,x[k+2],S43,0x2AD7D2BB);b=II(b,c,d,a,x[k+9],S44,0xEB86D391);a=AddUnsigned(a,AA);b=AddUnsigned(b,BB);c=AddUnsigned(c,CC);d=AddUnsigned(d,DD);}var temp=WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);return temp.toLowerCase();}

//
function _(_sid){return document.getElementsByTagName(_sid);}
//
function $(_sid){return document.getElementById(_sid);}
//
function $$(_sid){return parent.document.getElementById(_sid);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值