自己封装的常用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学习总结之元素的相对定位和选择器(持续更新)
Apr 26 Javascript
100个不能错过的实用JS自定义函数
Mar 05 Javascript
Jquery方式获取iframe页面中的 Dom元素
May 07 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
值得分享的JavaScript实现图片轮播组件
Nov 21 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
Vue组件开发技巧总结
Mar 04 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
es6函数之尾递归用法实例分析
Apr 25 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
PHP反射学习入门示例
2019/06/14 PHP
重定向实现代码
2006/11/20 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
Python3 批量扫描端口的例子
2019/07/25 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
广州某公司软件工程师面试题
2014/12/22 面试题
销售团队口号大全
2014/06/06 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
2014年收银工作总结
2014/11/13 职场文书
小学国庆节活动总结
2015/03/23 职场文书
财务部岗位职责范本
2015/04/14 职场文书
Python打包为exe详细教程
2021/05/18 Python
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python