自己封装的常用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帮助之筛选查找 children([expr])
Jan 31 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
超实用的JavaScript代码段 附使用方法
May 22 Javascript
prototype.js常用函数详解
Jun 18 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
JS如何生成动态列表
Sep 22 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
php简单压缩css样式示例
2016/09/22 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
js使用eval解析json(js中使用json)
2014/01/17 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
ES6之模版字符串的具体使用
2018/05/17 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python 专题一 函数的基础知识
2017/03/16 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
社区十八大感言
2014/01/19 职场文书
2014新年寄语
2014/01/20 职场文书
银行进社区活动总结
2014/07/07 职场文书
社团活动总结格式
2014/08/29 职场文书
小班上学期个人总结
2015/02/12 职场文书
初一数学教学反思
2016/02/17 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS