弘帝企业智能建站系统交流平台

 找回密码
 立即注册
查看: 3191|回复: 1

【JS】Javascript常用函数封装集锦

[复制链接]
发表于 2017-11-2 12:53:37 | 显示全部楼层 |阅读模式
//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.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.className))
        {
            aResult.push(aEle);
        }
    }

    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=(target-cur)*x/100+cur;
        }


        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=(target-cur)*x/100+cur;
        }


        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;
        }
    }
};
回复

使用道具 举报

 楼主| 发表于 2017-11-2 13:00:18 | 显示全部楼层
/**
* 转全角字符
*/
function toDBC(str){
    var result = "";
    var len = str.length;
    for(var i=0;i<len;i++)
    {
        var cCode = str.charCodeAt(i);
        //全角与半角相差(除空格外):65248(十进制)
        cCode = (cCode>=0x0021 && cCode<=0x007E)?(cCode + 65248) : cCode;
        //处理空格
        cCode = (cCode==0x0020)?0x03000:cCode;
        result += String.fromCharCode(cCode);
    }
    return result;
}

/**
* 转半角字符
*/
function toSBC(str){
    var result = "";
    var len = str.length;
    for(var i=0;i<len;i++)
    {
        var cCode = str.charCodeAt(i);
        //全角与半角相差(除空格外):65248(十进制)
        cCode = (cCode>=0xFF01 && cCode<=0xFF5E)?(cCode - 65248) : cCode;
        //处理空格
        cCode = (cCode==0x03000)?0x0020:cCode;
        result += String.fromCharCode(cCode);
    }
    return result;
}

全角与半角字符的转换
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|弘帝企业智能建站系统 ( 皖ICP备07503252号 )

GMT+8, 2024-11-24 03:18 , Processed in 0.052879 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表