自己封装的常用javascript函数分享


Posted in Javascript onJanuary 07, 2015

都是些常用的功能,这里就不多废话了,小伙伴们自己看下就明白了

奉上代码:

//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 相关文章推荐
免费空间广告万能消除代码
Sep 04 Javascript
JQuery 动态扩展对象之另类视角
May 25 Javascript
web前端开发也需要日志
Dec 09 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
JavaScript实现水平进度条拖拽效果
Jan 18 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
基于layui实现高级搜索(筛选)功能
Jul 26 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
流量统计器如何鉴别C#:WebBrowser中伪造referer
Jan 07 #Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 #Javascript
jQuery中children()方法用法实例
Jan 07 #Javascript
angular.element方法汇总
Jan 07 #Javascript
jQuery中slice()方法用法实例
Jan 07 #Javascript
angularJS中$apply()方法详解
Jan 07 #Javascript
jQuery中not()方法用法实例
Jan 06 #Javascript
You might like
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
php阳历转农历优化版
2016/08/08 PHP
PHP7新增函数
2021/03/09 PHP
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
django表单的Widgets使用详解
2019/07/22 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
python安装后的目录在哪里
2020/06/21 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
公司综合部的成员自我评价分享
2013/11/05 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
活动策划求职信模板
2014/04/21 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL