自己封装的常用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 相关文章推荐
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 Javascript
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
js前端导出Excel的方法
Nov 01 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
jfinal与bootstrap的登出实战详解
Nov 27 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
Jquery获取radio选中值实例总结
Jan 17 jQuery
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
流量统计器如何鉴别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
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
JS实现图片切换特效
2019/12/23 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python中的ConfigParser模块使用详解
2015/05/04 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python实现一组典型数据格式转换
2018/12/15 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
Python模块future用法原理详解
2020/01/20 Python
python2 对excel表格操作完整示例
2020/02/23 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
Django框架请求生命周期实现原理
2020/11/13 Python
介绍一下Ruby的特点
2013/01/20 面试题
2014年档案管理员工作总结
2014/12/01 职场文书
2015年教师国培感言
2015/08/01 职场文书