自用的一些简单js函数

原生js tool.js

这是将常用的js函数封装为一个js文件,所需时引入即可

总代码片段

// 获取对象style里的属性值
function getStyle(obj, attr) {
    if (window.getComputedStyle) {
        return getComputedStyle(obj, null)[attr];
    } else
        return obj.currentStyle[attr];
}

/*  匀速改变对象的属性
    move: obj 为要移动对象
            attr 元素的属性
            target 为目标值
            speed 移动的速度
            callback 回调函数方程,可不用设置
*/
function move(obj, attr, target, speed, callback) {
    // 清理执行前的定时器,使不影响要设置的定时器;
    clearInterval(obj.timer);
    var current = parseInt(getStyle(obj, attr));
    if (current > target) speed = -speed;
    obj.timer = setInterval(function () {
        var oldValue = parseInt(getStyle(obj, attr));
        var newValue = oldValue + speed;
        if (speed < 0 && newValue < target || speed > 0 && newValue > target)
            newValue = target;
        obj.style[attr] = newValue + "px";
        if (newValue == target) {
            clearInterval(obj.timer);
            callback && callback();
        }
    }, 100)
};

// 有objClass类名,就删除,没有就增加
function changeClass(obj, objClass) {
    var flag = true;
    var reg = new RegExp("\\b" + objClass + "\\b");
    flag = reg.test(obj.className);
    if (flag) obj.className = obj.className.replace(reg, "");
    else obj.className += " " + objClass;
};
// 增加class类, obj为对象,objClass为要增加的class名
function addClass(obj, objClass) {
    var flag = true;
    var reg = new RegExp("\\b" + objClass + "\\b");
    flag = reg.test(obj.className);
    if (!flag) obj.className += " " + objClass;
}
// 删除class
function delClass(obj, objClass) {
    var reg = new RegExp("\\b" + objClass + "\\b");
    obj.className = obj.className.replace(reg, "");
};
// 判断对象有没有变量objClass这class类名
function hasClass(obj, objClass) {
    var reg = new RegExp("\\b" + objClass + "\\b");
    return reg.test(obj.className)
};
/*
   //返回当前的时间格式 
   参数i为 默认为1 返回年月日时分秒 2020-1-5 5:3:20
                2     时分秒     5:3:20
                3     年月日    2020-1-5
*/
function getTime(i){
    if(i!=2 && i!=3) i = 1
    var time = new Date;
    var y = time.getFullYear()
    var month = time.getMonth()+1
    var d = time.getDate()
    var h = time.getHours()
    var min = time.getMinutes()
    var s = time.getSeconds()
    var arr = [y+'-',month+'-',d+' ',h+":",min+":",s]
    var arr1 = [h+":",min+":",s];
    var arr2 = [y+'-',month+'-',d];
    var currentTime = arr.join(''); //年月日时分秒
    var nowtime = arr1.join('');    
    var nowday = arr2.join('');
    if(i==1) return currentTime;    //年月日时分秒
    if(i==2) return nowtime;        //时分秒
    if(i==3) return nowday;         //年月日     
}

返回时间格式

/*
   //返回当前的时间格式 
   参数i为 默认为1 返回年月日时分秒 2020-1-5 5:3:20
                2     时分秒     5:3:20
                3     年月日    2020-1-5
*/
function getTime(i){
    if(i!=2 && i!=3) i = 1
    var time = new Date;
    var y = time.getFullYear()
    var month = time.getMonth()+1
    var d = time.getDate()
    var h = time.getHours()
    var min = time.getMinutes()
    var s = time.getSeconds()
    var arr = [y+'-',month+'-',d+' ',h+":",min+":",s]
    var arr1 = [h+":",min+":",s];
    var arr2 = [y+'-',month+'-',d];
    var currentTime = arr.join(''); //年月日时分秒
    var nowtime = arr1.join('');    
    var nowday = arr2.join('');
    if(i==1) return currentTime;    //年月日时分秒
    if(i==2) return nowtime;        //时分秒
    if(i==3) return nowday;         //年月日     
}

移动动画(可设速度,回调函数)

/*  匀速改变对象的属性
    move: obj 为要移动对象
            attr 元素的属性
            target 为目标值
            speed 移动的速度
            callback 回调函数方程,可不用设置
*/
function move(obj, attr, target, speed, callback) {
    // 清理执行前的定时器,使不影响要设置的定时器(不设可能出现前定时器没关并且不能关,速度越来越快的bug);
    clearInterval(obj.timer);
    var current = parseInt(getStyle(obj, attr))    
	//判断移动的方向
    if (current > target) speed = -speed   
	//开始定时器
    obj.timer = setInterval(function () {
        var oldValue = parseInt(getStyle(obj, attr));
        var newValue = oldValue + speed;
        //判断移动的是否已到达目标或超越目标
        if (speed < 0 && newValue < target || speed > 0 && newValue > target)
            newValue = target;
        //移动
        obj.style[attr] = newValue + "px";
        //当前值等于目标值时,关闭定时器,传入回调函数就调用回调函数
        if (newValue == target) {
            clearInterval(obj.timer);
            callback && callback();
        }
    }, 100)
};

Class类修改

// obj对象有指定的类名,就删除,没有就增加(有删无加)
function changeClass(obj, objClass) {
    var flag = true;
    var reg = new RegExp("\\b" + objClass + "\\b");
    flag = reg.test(obj.className);
    if (flag) obj.className = obj.className.replace(reg, "");
    else obj.className += " " + objClass;
};
// 增加class类, obj为对象,objClass为要增加的class名
function addClass(obj, objClass) {
    var flag = true;
    var reg = new RegExp("\\b" + objClass + "\\b");
    flag = reg.test(obj.className);
    if (!flag) obj.className += " " + objClass;
}
// 删除class
function delClass(obj, objClass) {
    var reg = new RegExp("\\b" + objClass + "\\b");
    obj.className = obj.className.replace(reg, "");
};
// 判断对象有没有变量objClass这class类名
function hasClass(obj, objClass) {
    var reg = new RegExp("\\b" + objClass + "\\b");
    return reg.test(obj.className)
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值