不是原创
//尝试创建一个可以执行简单动画的函数
/*
-
参数:
-
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;
}