Javascript:常用函数封装

//cookie

function setCookie(name, value, iDay)

{

    if(iDay!==false)

    {

        var oDate=new Date();

        oDate.setDate(oDate.getDate()+iDay);



        document.cookie=name+'='+value+';expires='+oDate+';path=/';

    }

    else

    {

        document.cookie=name+'='+value;

    }

}



function getCookie(name)

{

    var arr=document.cookie.split('; ');

    var i=0;



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

    {

        var arr2=arr[i].split('=');



        if(arr2[0]==name)

        {

            return arr2[1];

        }

    }

    return '';

}



function removeCookie(name)

{

    setCookie(name, 'a', -1);

}

//事件

function myAddEvent(obj, ev, fn){

    obj.attachEvent?obj.attachEvent('on'+ev, fn):obj.addEventListener(ev, fn, false);

}

function myDelEvent(obj, ev, fn){

    obj.detachEvent?obj.detachEvent('on'+ev, fn):obj.removeEventListener(ev, fn, false);

}



function getByClass(oParent, sClass)

{

    var aEle=oParent.getElementsByTagName('*');

    var re=new RegExp('\\b'+sClass+'\\b', 'i');

    var aResult=[];



    for(var i=0;i<aEle.length;i++)

    {

        if(re.test(aEle[i].className))

        {

            aResult.push(aEle[i]);

        }

    }



    return aResult;

}



function bindEvent(obj, ev, fn)

{

    obj.addEventListener?obj.addEventListener(ev, fn, false):obj.attachEvent('on'+ev, fn);

}

function unbindEvent(obj, ev, fn)

{

    obj.removeEventListener?obj.removeEventListener(ev, fn, false):obj.detachEvent('on'+ev, fn);

}



//生成随机数

function rnd(n, m)

{

    return Math.random()*(m-n)+n;

}



function time2date(t)

{

    function d(n){return n<10?'0'+n:''+n;}



    var oDate=new Date(t*1000);



    return oDate.getFullYear()+'-'+d(oDate.getMonth()+1)+'-'+d(oDate.getDate())+' '+d(oDate.getHours())+':'+d(oDate.getMinutes())+':'+d(oDate.getSeconds());

}

function time2day(t)

{

    function d(n){return n<10?'0'+n:''+n;}



    var oDate=new Date(t*1000);



    return oDate.getFullYear()+'-'+d(oDate.getMonth()+1)+'-'+d(oDate.getDate());

}



//拖拽

function drag(objEv, objMove, fnMoveCallBack)

{

    var disX=0,disY=0;



    objEv.onmousedown=function (ev)

    {

        var oEvent=ev||event;

        disX=(document.documentElement.scrollLeft||document.body.scrollLeft)+oEvent.clientX-objMove.offsetLeft;

        disY=(document.documentElement.scrollTop||document.body.scrollTop)+oEvent.clientY-objMove.offsetTop;



        if(objEv.setCapture)

        {

            objEv.onmousemove=fnMove;

            objEv.onmouseup=fnUp;



            objEv.setCapture();

        }

        else

        {

            document.onmousemove=fnMove;

            document.onmouseup=fnUp;



            return false;

        }

    };



    function fnMove(ev)

    {

        var oEvent=ev||event;

        var l=(document.documentElement.scrollLeft||document.body.scrollLeft)+oEvent.clientX-disX;

        var t=(document.documentElement.scrollTop||document.body.scrollTop)+oEvent.clientY-disY;



        fnMoveCallBack(l,t);

    }



    function fnUp()

    {

        this.onmousemove=null;

        this.onmouseup=null;



        if(this.releaseCapture)this.releaseCapture();

    }

}



function mouseScroll(obj, fnCallBack)

{

    bindEvent(obj, 'mousewheel', fnScroll);

    bindEvent(obj, 'DOMMouseScroll', fnScroll);



    function fnScroll(ev)

    {

        var oEvent=ev||event;

        var bDown;



        if(oEvent.wheelDelta)

        {

            bDown=oEvent.wheelDelta<0;

        }

        else

        {

            bDown=oEvent.detail>0;

        }



        fnCallBack(bDown);



        if(oEvent.preventDefault)oEvent.preventDefault();

        return false;

    }

}



//摆动运动

zns.site.fx.swing=function (obj, cur, target, fnDo, fnEnd, acc)

{

    if(zns.site.fx.browser_test.IE6)

    {

        fnDo&&fnDo.call(obj, target);

        fnEnd&&fnEnd.call(obj, target);

        return;

    }

    if(!acc)acc=0.1;

    var now={};

    var x=0;    //0-100



    if(!obj.__swing_v)obj.__swing_v=0;



    if(!obj.__last_timer)obj.__last_timer=0;

    var t=new Date().getTime();

    if(t-obj.__last_timer>20)

    {

        fnMove();

        obj.__last_timer=t;

    }



    clearInterval(obj.timer);

    obj.timer=setInterval(fnMove, 20);



    function fnMove(){

        if(x<50)

        {

            obj.__swing_v+=acc;

        }

        else

        {

            obj.__swing_v-=acc;

        }



        //if(Math.abs(obj.__flex_v)>MAX_SPEED)obj.__flex_v=obj.__flex_v>0?MAX_SPEED:-MAX_SPEED;



        x+=obj.__swing_v;



        //alert(x+','+obj.__swing_v);



        for(var i in cur)

        {

            now[i]=(target[i]-cur[i])*x/100+cur[i];

        }





        if(fnDo)fnDo.call(obj, now);



        if(/*Math.abs(obj.__swing_v)<1 || */Math.abs(100-x)<1)

        {

            clearInterval(obj.timer);

            if(fnEnd)fnEnd.call(obj, target);

            obj.__swing_v=0;

        }

    }

};



//弹性运动

zns.site.fx.flex=function (obj, cur, target, fnDo, fnEnd, fs, ms)

{

    if(zns.site.fx.browser_test.IE6)

    {

        fnDo&&fnDo.call(obj, target);

        fnEnd&&fnEnd.call(obj, target);

        return;

    }

    var MAX_SPEED=16;



    if(!fs)fs=6;

    if(!ms)ms=0.75;

    var now={};

    var x=0;    //0-100



    if(!obj.__flex_v)obj.__flex_v=0;



    if(!obj.__last_timer)obj.__last_timer=0;

    var t=new Date().getTime();

    if(t-obj.__last_timer>20)

    {

        fnMove();

        obj.__last_timer=t;

    }



    clearInterval(obj.timer);

    obj.timer=setInterval(fnMove, 20);



    function fnMove(){

        obj.__flex_v+=(100-x)/fs;

        obj.__flex_v*=ms;



        if(Math.abs(obj.__flex_v)>MAX_SPEED)obj.__flex_v=obj.__flex_v>0?MAX_SPEED:-MAX_SPEED;



        x+=obj.__flex_v;



        for(var i in cur)

        {

            now[i]=(target[i]-cur[i])*x/100+cur[i];

        }





        if(fnDo)fnDo.call(obj, now);



        if(Math.abs(obj.__flex_v)<1 && Math.abs(100-x)<1)

        {

            clearInterval(obj.timer);

            if(fnEnd)fnEnd.call(obj, target);

            obj.__flex_v=0;

        }

    }

};

半角与全角

代码

Javascript:常用函数封装
 1 /**

 2  * 转全角字符

 3  */

 4 function toDBC(str){

 5     var result = "";

 6     var len = str.length;

 7     for(var i=0;i<len;i++)

 8     {

 9         var cCode = str.charCodeAt(i);

10         //全角与半角相差(除空格外):65248(十进制)

11         cCode = (cCode>=0x0021 && cCode<=0x007E)?(cCode + 65248) : cCode;

12         //处理空格

13         cCode = (cCode==0x0020)?0x03000:cCode;

14         result += String.fromCharCode(cCode);

15     }

16     return result;

17 }

18 

19 /**

20  * 转半角字符

21  */

22 function toSBC(str){

23     var result = "";

24     var len = str.length;

25     for(var i=0;i<len;i++)

26     {

27         var cCode = str.charCodeAt(i);

28         //全角与半角相差(除空格外):65248(十进制)

29         cCode = (cCode>=0xFF01 && cCode<=0xFF5E)?(cCode - 65248) : cCode;

30         //处理空格

31         cCode = (cCode==0x03000)?0x0020:cCode;

32         result += String.fromCharCode(cCode);

33     }

34     return result;

35 }
全角与半角字符的转换

知识点

通过半角字符与全角字符的比较(ASCII字符),我们可以发现,拥有全角与半角之分的ASCII字符范围:0x20~0x7E。

比如:

符号 半角 全角 相差
# 0x0023 0xFF03 0xFEE0
? 0x003F 0xFF1F 0xFEE0
空格 0x0020 0x03000 0x2FE0

除了空格外,其他的字符中,全角与半角均相差:0xFFE0

因此,在全角与半角的字符转换中,需要对空格特殊处理。

例如:

全角 = 半角 + 0xFEE0

半角 = 全角  - 0xFFE0

相关文章:

请问半角全角有什么区别

维基百科:全角和半角

Java 半角全角互相转换

 

代码段摘抄自:http://www.zhinengshe.com/js/main.js

推荐一个不错的javascript函数库网站:http://www.jslab.org.cn/

你可能感兴趣的:(JavaScript)