js中常用的工具方法

不是原创
//尝试创建一个可以执行简单动画的函数
/*

  • 参数:

  • obj:要执行动画的对象

  • attr:要执行动画的样式,比如:left top width height

  • target:执行动画的目标位置

  • speed:移动的速度(正数向右移动,负数向左移动)

  • callback:回调函数,这个函数将会在动画执行完毕以后执行
    */
    function move(obj, attr, target, speed, callback) {
    //关闭上一个定时器
    clearInterval(obj.timer);

    //获取元素目前的位置
    var current = parseInt(getStyle(obj, attr));

    //判断速度的正负值
    //如果从0 向 800移动,则speed为正
    //如果从800向0移动,则speed为负
    if(current > target) {
    //此时速度应为负值
    speed = -speed;
    }

    //开启一个定时器,用来执行动画效果
    //向执行动画的对象中添加一个timer属性,用来保存它自己的定时器的标识
    obj.timer = setInterval(function() {
    //获取box1的原来的left值
    var oldValue = parseInt(getStyle(obj, attr));
    //在旧值的基础上增加
    var newValue = oldValue + speed;
    //判断newValue是否大于800
    //从800 向 0移动
    //向左移动时,需要判断newValue是否小于target
    //向右移动时,需要判断newValue是否大于target
    if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) {
    newValue = target;
    }
    //将新值设置给box1
    obj.style[attr] = newValue + “px”;
    //当元素移动到0px时,使其停止执行动画
    if(newValue == target) {
    //达到目标,关闭定时器
    clearInterval(obj.timer);
    //动画执行完毕,调用回调函数
    callback && callback();
    }
    }, 30);
    }

/*

  • 定义一个函数,用来获取指定元素的当前的样式
  • 参数:
  •  obj 要获取样式的元素
    
  •  name 要获取的样式名
    

*/
function getStyle(obj, name) {
if(window.getComputedStyle) {
//正常浏览器的方式,具有getComputedStyle()方法
return getComputedStyle(obj, null)[name];
} else {
//IE8的方式,没有getComputedStyle()方法
return obj.currentStyle[name];
}
}

//定义一个函数,用来向一个元素中添加指定的class属性值
/*

  • 参数:
  • obj 要添加class属性的元素
  • cn 要添加的class值

*/
function addClass(obj, cn) {
//检查obj中是否含有cn
if(!hasClass(obj, cn)) {
obj.className += " " + cn;
}
}

/*

  • 判断一个元素中是否含有指定的class属性值
  • 如果有该class,则返回true,没有则返回false

*/
function hasClass(obj, cn) {
//判断obj中有没有cn class
//创建一个正则表达式
//var reg = /\bb2\b/;
var reg = new RegExp("\b" + cn + “\b”);
return reg.test(obj.className);
}

/*

  • 删除一个元素中的指定的class属性
    */
    function removeClass(obj, cn) {
    //创建一个正则表达式
    var reg = new RegExp("\b" + cn + “\b”);

    //删除class
    obj.className = obj.className.replace(reg, “”);

}

/*

  • toggleClass可以用来切换一个类

  • 如果元素中具有该类,则删除

  • 如果元素中没有该类,则添加
    */
    function toggleClass(obj, cn) {

    //判断obj中是否含有cn
    if(hasClass(obj, cn)) {
    //有,则删除
    removeClass(obj, cn);
    } else {
    //没有,则添加
    addClass(obj, cn);
    }

}
/**

  • 数组去重
    /
    function distinct(arr){
    var result = [];
    for(var i=0;i<arr.length;i++){
    var value = arr[i];
    var flag = false;
    for(var j=0;j<result.length;j++){
    if(value == result[j]){
    flag = true;
    break;
    }
    }
    if(!flag){//不重复
    result.push(value);
    }
    }
    return result;
    }
    /
    *
  • Date转字符串 yyyy-MM-dd hh:mm:ss
    */
    function getDateFormat(date){
    var nowDate = date;
    var dateStr = ‘’;
    dateStr += nowDate.getFullYear()+"-";
    var mon = nowDate.getMonth()+1;
    dateStr += mon<10?“0”+mon:mon;
    dateStr += “-”;
    dateStr += nowDate.getDate()<10?“0”+nowDate.getDate():nowDate.getDate();
    dateStr += " ";
    var hour = nowDate.getHours();
    dateStr += hour<10?“0”+hour:hour;
    dateStr += “:”;
    var min = nowDate.getMinutes();
    dateStr += min<10?“0”+min:min;
    dateStr += “:”;
    var second = nowDate.getSeconds();
    dateStr += second<10?“0”+second:second;
    return dateStr;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值