自用tool.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)
};