• 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;
            }
        }
    };

    半角与全角

    代码

     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/

  • 相关阅读:
    (兼容)IE9 以下版本浏览器兼容HTML5的方法
    使用ORACLE 中ROWNUM方法实现数据库分批获取
    更新上传到github的代码
    Spring-AOP
    C++结构体的应用_YCOJ
    基本类型数据封装
    sessionStorage 封装
    Vue国际化四 -- 本地缓存
    Vue国际化三【在下拉框中使用】
    Vue国际化二 【在表格中的使用】
  • 原文地址:https://www.cnblogs.com/hongfei/p/3922242.html
Copyright © 2020-2023  润新知