试图让函数循环使用window.onload但是不起作用

时间:2012-11-23 03:28:55

标签: javascript jquery css animation loops

我有这个JavaScript / jQuery动画功能在这里,我希望它使用3000为每个window.onload = function(){}循环,但由于某种原因它不起作用。我认为可以语法/基础错误,因为我是javascript的新手,但如果我应该使用不同的方法,请告诉我。这是我的代码:

function animTile(){
    $(".main-content").delay(3000).animate({
        top: "100%"
    });

    $(".secondary-content").delay(3000).animate({
        top: "0"
    });
}

window.onload = function(){
    animTile(); setInterval(animTile, 3000);
}

编辑:

也许这也有帮助。这是我的CSS代码:

    #wrap {
        display: block;
        height: 328px;
        width: 568px;
        overflow: hidden;
    }

    #wrap .main-content {
        display: block;
        height: 100%;
        width: 100%;
        position: absolute;
        top: 0%;
    }

    #wrap .secondary-content {
        display: block;
        height: 100%;
        width: 100%;
        position: absolute;
        top: 100%;
    }

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

 function animTile(){
$(".main-content").delay(3000).animate({
    top: "100%"
});

$(".secondary-content").delay(3000).animate({
    top: "0"
});
 animTileTwo();
}

function animTileTwo(){
$(".main-content").delay(3000).animate({
    top: "0"
});

$(".secondary-content").delay(3000).animate({
    top: "100%"
});
}


  window.onload=function(){
     setInterval("animTile()", 3000);
 } 

答案 1 :(得分:0)

试试这个:

function animTile(){
$(".main-content").animate({
    top: "100%"
}, 1000);

$(".secondary-content").animate({
    top: "0"
}, 1000);
setTimeout('animTile()', 3000);
}

window.onload = function(){
animTile();
}

答案 2 :(得分:0)

为什么你使用'延迟'功能?你想要什么? 你说你想要一些循环动画,但是在你的代码中,我只为每个元素找到了一个状态。我的意思是,如果你想要一个循环动画,你应该将一些属性设置为值A,然后将其设置为值B,然后将其设置回值A ...这是一个循环。

所以,我想你想把'top'属性设置为'100%',然后3000 ms后将其设置为0,然后3000 ms后将其设置为'100%'。是吗?

如果这是您想要的,请尝试以下代码:

    function toggle() {
        var elem = $('#id');
        if (elem.css('top') == '700px') {
            elem.animate({
                top: "0"
            });
        } else {
            elem.animate({
                top: "700px"
            });
        }
    }
    toggle();
    setInterval(toggle, 3000);