/*
* //obj:对象 ;attr:属性 endFn:回调函数
* move(obj, attr,endFn//function(){回调执行事件})
* 注释*1
* obj.onOff
* 防止定时器插队
* 当函数执行时该值将成为不可执行值
* 知道定时器执行完成后改变该值
*
* 注释*2
* 回调函数
* 判断当前函数是否存在
* 如果存在就执行
*
*
* 注释*3
* 使用for循环来生成obj的抖动幅度
* 并保存于Arr数组中
* 注意需要添加[0]
* */
function shake(obj, attr, endfn) {
var timer = null
var arr = []
var num = 0
if(!obj.onOff) { //注释*1
obj.onOff = true
//
for(var i = 20; i > 0; i--) {
arr.push(i, -i)
}
arr.push(0)
//至上一个//部分为 注释*3
var pos = parseInt(getStyle(obj, attr))//使用getStyle()函数
timer = setInterval(function() {
obj.style[attr] = pos + arr[num] + "px" //执行当前函数要求
num++ //使用 num 调取出Arr数组中的值
if(num == arr.length) { //判断当前事件是否已经完成
clearInterval(timer) //已经完成,清除定时器
obj.onOff = false //注释*1
if(endfn) { //注释*2
endfn()
}
}
}, 30)
}
}
function getStyle(obj, attr) { //getStyle() 获取元素当前属性值
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr]
}