// 动画函数的JS部分 // function animate(obj,target,callback){ // clearInterval(obj.timer); // obj.timer = setInterval(function(){ // var step = (target - obj.offsetLeft)/30; // step = step > 0 ? Math.ceil(step) : Math.floor(step); // if(obj.offsetLeft == target){ // clearInterval(obj.timer); // if(callback){ // callback(); // } // } // obj.style.left = obj.offsetLeft + step + 'px'; // },15); // } // 轮播图函数的动画函数JS部分 function animate(obj,target,callback){ clearInterval(obj.timer); obj.timer = setInterval(function(){ var step = (target - obj.offsetLeft)/15; //这里的数字可以改 step = step > 0 ? Math.ceil(step) : Math.floor(step); if(obj.offsetLeft == target){ clearInterval(obj.timer); // if(callback){ // callback(); // } callback && callback(); //这一行的写法作用跟上三行的写法作用一样,只不过这一行更优化 // 上面那行的写法原理是短路运算,&&要求左边为true,即有callback参数传进来,才会执行后面的callback()调用 //如果左边的callback为false,即没有callback参数传进来,就直接结束代码,因为短路运算要求两边必须为真 // 总结来说就是,左边为真,则执行右边的调用函数。左边为假则不调用函数 } obj.style.left = obj.offsetLeft + step + 'px'; },10); //这里的数字可以改 }