自己封装的常用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 相关文章推荐
JS的反射问题
Apr 07 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
May 17 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
深入浅析Vue不同场景下组件间的数据交流
Aug 15 Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 Javascript
详解js的视频和音频采集
Aug 09 Javascript
JavaScript 高性能数组去重的方法
Sep 20 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
vue cli安装使用less的教程详解
Jul 12 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实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php单例模式实现方法分析
2015/03/14 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
重定向实现代码
2006/11/20 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
python调用windows api锁定计算机示例
2014/04/17 Python
python3生成随机数实例
2014/10/20 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
windows下python安装pip图文教程
2018/05/25 Python
对Python 内建函数和保留字详解
2018/10/15 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
亲子读书活动方案
2014/02/22 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
SpringBoot整合Minio文件存储
2022/04/03 Java/Android
pandas中pd.groupby()的用法详解
2022/06/16 Python
nginx之queue的具体使用
2022/06/28 Servers