var s1 = [572,395,68,117];
var s2 = [290,460,129,96];
var s3 = [420,240,64,82];
var s4 = [185,290,65,67];
var s5 = [40,300,112,172];
var s6 = [475,25,106,98];
var s7 = [175,40,105,95];
var s;
s = window.setInterval(play,2500);   //这里只执行了一次,Why???
//放大
function zoomOut(obj){
var index = obj.parent().index() + 1;
obj.stop().animate({
left:eval('s'+index)[0]-25,
top:eval('s'+index)[1]-25,
width:eval('s'+index)[2]+50,
height:eval('s'+index)[3]+50
},'fast');
}
//缩小
function zoomIn(obj){
var index = obj.parent().index() + 1;
console.log(index);
obj.stop().animate({
left:eval('s'+index)[0],
top:eval('s'+index)[1],
width:eval('s'+index)[2],
height:eval('s'+index)[3]
},'fast');
}
//循环动画
function play(){
var index = md_random(1,6);
var obj = $('.s_circle a:eq('+index+')').children('img');
zoomOut(obj);
window.setTimeout(function(){
zoomIn(obj);
},500);
}

解决方案 »

  1.   

    本来就只执行一次;
    要执行多次:
    //循环动画
    function play(){
        var index = md_random(1,6);
        var obj = $('.s_circle a:eq('+index+')').children('img');
        zoomOut(obj);
        window.setTimeout(function(){
            zoomIn(obj);
            play();
        },500);
    }
      

  2.   

    var index = md_random(1,6);   这个后面的东西是什么?  你看看你的js是不是报错了?
      

  3.   


    很明显,我没有把所有代码都贴出来啦。md_random是我用js写的取随机数的函数。
      

  4.   

    求问原因。setInterval不是对第一个参数循环执行吗?为什么要在这个方法里面递归?
      

  5.   

    另外,如果我把这两行注释掉的话,确实可以循环执行下去:
    //循环动画
    function play(){
        var index = md_random(1,6);
        var obj = $('.s_circle a:eq('+index+')').children('img');
        /*zoomOut(obj);
        window.setTimeout(function(){
            zoomIn(obj);
        },500);*/     //这里注释掉却可以循环执行,Why??
    }
      

  6.   

    setInterval()调用没有问题,可能是zoomOut(obj);或者zoomIn(obj);逻辑有问题。