天天看點

javascript 常用方法

(1)startwith

js本身沒有startwith方法,我進行了如下封裝:

javascript 常用方法

string.prototype.startwith=function (string)  

{  

    return (this.indexof(string)==0);  

}  

var aaaa="/c/c";  

alert(aaaa.startwith('/'));  

(2)計算md5值

js檔案:calcmd5.js

javascript 常用方法

/* 

 * a javascript implementation of the rsa data security, inc. md5 message 

 * digest algorithm, as defined in rfc 1321. 

 * copyright (c) paul johnston 1999 - 2000. 

 * updated by greg holt 2000 - 2001. 

 * see http://pajhome.org.uk/site/legal.html for details. 

 */  

 * convert a 32-bit number to a hex string with ls-byte first 

var hex_chr = "0123456789abcdef";  

function rhex(num)  

  str = "";  

  for(j = 0; j <= 3; j++)  

    str += hex_chr.charat((num >> (j * 8 + 4)) & 0x0f) +  

           hex_chr.charat((num >> (j * 8)) & 0x0f);  

  return str;  

 * convert a string to a sequence of 16-word blocks, stored as an array. 

 * append padding bits and the length, as described in the md5 standard. 

function str2blks_md5(str)  

  nblk = ((str.length + 8) >> 6) + 1;  

  blks = new array(nblk * 16);  

  for(i = 0; i < nblk * 16; i++) blks[i] = 0;  

  for(i = 0; i < str.length; i++)  

    blks[i >> 2] |= str.charcodeat(i) << ((i % 4) * 8);  

  blks[i >> 2] |= 0x80 << ((i % 4) * 8);  

  blks[nblk * 16 - 2] = str.length * 8;  

  return blks;  

 * add integers, wrapping at 2^32. this uses 16-bit operations internally  

 * to work around bugs in some js interpreters. 

function add(x, y)  

  var lsw = (x & 0xffff) + (y & 0xffff);  

  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);  

  return (msw << 16) | (lsw & 0xffff);  

 * bitwise rotate a 32-bit number to the left 

function rol(num, cnt)  

  return (num << cnt) | (num >>> (32 - cnt));  

 * these functions implement the basic operation for each round of the 

 * algorithm. 

function cmn(q, a, b, x, s, t)  

  return add(rol(add(add(a, q), add(x, t)), s), b);  

function ff(a, b, c, d, x, s, t)  

  return cmn((b & c) | ((~b) & d), a, b, x, s, t);  

function gg(a, b, c, d, x, s, t)  

  return cmn((b & d) | (c & (~d)), a, b, x, s, t);  

function hh(a, b, c, d, x, s, t)  

  return cmn(b ^ c ^ d, a, b, x, s, t);  

function ii(a, b, c, d, x, s, t)  

  return cmn(c ^ (b | (~d)), a, b, x, s, t);  

 * take a string and return the hex representation of its md5. 

function calcmd5(str)  

  x = str2blks_md5(str);  

  a =  1732584193;  

  b = -271733879;  

  c = -1732584194;  

  d =  271733878;  

  for(i = 0; i < x.length; i += 16)  

  {  

    olda = a;  

    oldb = b;  

    oldc = c;  

    oldd = d;  

    a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);  

    d = ff(d, a, b, c, x[i+ 1], 12, -389564586);  

    c = ff(c, d, a, b, x[i+ 2], 17,  606105819);  

    b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);  

    a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);  

    d = ff(d, a, b, c, x[i+ 5], 12,  1200080426);  

    c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);  

    b = ff(b, c, d, a, x[i+ 7], 22, -45705983);  

    a = ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);  

    d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);  

    c = ff(c, d, a, b, x[i+10], 17, -42063);  

    b = ff(b, c, d, a, x[i+11], 22, -1990404162);  

    a = ff(a, b, c, d, x[i+12], 7 ,  1804603682);  

    d = ff(d, a, b, c, x[i+13], 12, -40341101);  

    c = ff(c, d, a, b, x[i+14], 17, -1502002290);  

    b = ff(b, c, d, a, x[i+15], 22,  1236535329);      

    a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);  

    d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);  

    c = gg(c, d, a, b, x[i+11], 14,  643717713);  

    b = gg(b, c, d, a, x[i+ 0], 20, -373897302);  

    a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);  

    d = gg(d, a, b, c, x[i+10], 9 ,  38016083);  

    c = gg(c, d, a, b, x[i+15], 14, -660478335);  

    b = gg(b, c, d, a, x[i+ 4], 20, -405537848);  

    a = gg(a, b, c, d, x[i+ 9], 5 ,  568446438);  

    d = gg(d, a, b, c, x[i+14], 9 , -1019803690);  

    c = gg(c, d, a, b, x[i+ 3], 14, -187363961);  

    b = gg(b, c, d, a, x[i+ 8], 20,  1163531501);  

    a = gg(a, b, c, d, x[i+13], 5 , -1444681467);  

    d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);  

    c = gg(c, d, a, b, x[i+ 7], 14,  1735328473);  

    b = gg(b, c, d, a, x[i+12], 20, -1926607734);  

    a = hh(a, b, c, d, x[i+ 5], 4 , -378558);  

    d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);  

    c = hh(c, d, a, b, x[i+11], 16,  1839030562);  

    b = hh(b, c, d, a, x[i+14], 23, -35309556);  

    a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);  

    d = hh(d, a, b, c, x[i+ 4], 11,  1272893353);  

    c = hh(c, d, a, b, x[i+ 7], 16, -155497632);  

    b = hh(b, c, d, a, x[i+10], 23, -1094730640);  

    a = hh(a, b, c, d, x[i+13], 4 ,  681279174);  

    d = hh(d, a, b, c, x[i+ 0], 11, -358537222);  

    c = hh(c, d, a, b, x[i+ 3], 16, -722521979);  

    b = hh(b, c, d, a, x[i+ 6], 23,  76029189);  

    a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);  

    d = hh(d, a, b, c, x[i+12], 11, -421815835);  

    c = hh(c, d, a, b, x[i+15], 16,  530742520);  

    b = hh(b, c, d, a, x[i+ 2], 23, -995338651);  

    a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);  

    d = ii(d, a, b, c, x[i+ 7], 10,  1126891415);  

    c = ii(c, d, a, b, x[i+14], 15, -1416354905);  

    b = ii(b, c, d, a, x[i+ 5], 21, -57434055);  

    a = ii(a, b, c, d, x[i+12], 6 ,  1700485571);  

    d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);  

    c = ii(c, d, a, b, x[i+10], 15, -1051523);  

    b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);  

    a = ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);  

    d = ii(d, a, b, c, x[i+15], 10, -30611744);  

    c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);  

    b = ii(b, c, d, a, x[i+13], 21,  1309151649);  

    a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);  

    d = ii(d, a, b, c, x[i+11], 10, -1120210379);  

    c = ii(c, d, a, b, x[i+ 2], 15,  718787259);  

    b = ii(b, c, d, a, x[i+ 9], 21, -343485551);  

    a = add(a, olda);  

    b = add(b, oldb);  

    c = add(c, oldc);  

    d = add(d, oldd);  

  }  

  return rhex(a) + rhex(b) + rhex(c) + rhex(d);  

 測試:

javascript 常用方法

var result=calcmd5("whuang");  

(3)把json對象轉換為字元串

依賴的js檔案見附件

範例:

javascript 常用方法

var person={"name":"黃威","qq":"1287789687"};  

person= json.stringify(person);  

alert(person)  

(4)字元串出現的次數

var str = "goodsaa.name";

    var find = "x";

    var reg = new regexp(find, "g");

    var c = str.match(reg);

    alert(c ? c.length : 0);

上例是求str中字元x 出現的次數。regexp的第二個參數g 表示全局搜尋。

(5)判斷字元串中句号(不作為通配符)出現的次數

<script type="text/javascript">

    var str = "goodsaa..name";

    var find = "\\.";//對句點要轉義

</script>

(6)把json字元串轉化為json對象

javascript 常用方法

var jsonstr='{"2":"1.2.3","3":"1.2.5"}';  

var jsonobj2=eval("("+jsonstr+")");  

alert(jsonobj2["2"])  

 (7)js中擷取年份

方式一:

ie

98年

99年

2000年

2001年

2012年

火狐

100年

101年

112年

在firefox 裡面getyear 傳回的是"目前年份-1900" 的值(以前都如此) 

在ie裡面當today的年份大于等于2000的時候直接把1900加上了 

javascript 常用方法

var appname23=(navigator.appname);  

var appcodename32=navigator.appcodename;  

var isfirefox=(appname23=="netscape")&&(appcodename32=="mozilla");  

var today = new date();  

            var year = today.getyear();  

            if(isfirefox){//browser is firefox  

                year=year+1900;  

                 alert("火狐: "+year);  

            }else{////browser is ie  

                year=year>1999?year:year+1900;  

                 alert("ie: "+year);  

            }  

 方式二:

var today = new date();

            var year = today.getfullyear();

           alert(year);

方式三:

            var year = today.getutcfullyear();

(8)document.all的相容性

if(isfirefox){//browser is firefox

       otable=document.getelementbyid(this.stableid);

    }else{

       otable=document.all[this.stableid];

    }

nowtime.value = document.all.examclock.innerhtml;

結論:火狐不支援document.all,但是ie支援

(9)js動态添加元件

javascript 常用方法

var buttontd=com.whuang.hsj.$$id("buttontd");//td tag  

        var newinput =document.createelement("input");  

        newinput.type="button";   

        newinput.name="input1";  

        newinput.value="修改密碼";  

        buttontd.appendchild(newinput);  

 (10)禁用表單送出事件

event.returnvalue= false;

方式二:

returnfalse;

event.returnvalue在火狐中不好使,應該改為:

繼續閱讀