1

5秒ごとにパディングを追加することを目的としたjquery関数を作成しましたが、一度しか機能しません。

<script type="text/javascript">

function aniMation(){

    var top=0;
    var left=0;

    $('#frame').css({top:++top,left:++left})

    }


$(function (){

    setInterval(aniMation,5000)

    })


</script>



<body>

<div class="main">
<div id="frame">
text

</div>
4

5 に答える 5

1

aniMation() から setInterval(aniMation,5000) も呼び出すと、このように...

function aniMation(){
var top=0;
var left=0;

$('#frame').css({top:++top,left:++left})
  setInterval(aniMation,5000);
}
于 2012-04-23T06:21:23.190 に答える
1
function aniMation(){
    var top=0;
    var left=0;
    $('#frame').css({top:++top,left:++left});
    setTimeout(aniMation , 5000);
}

コードが機能しなかった理由を更新します

次のように省略形を使用して$(document).ready( function() { somecode; });います。

$(function (){
    setInterval(aniMation,5000);
});

そして、それはページが正しくロードされたときに実行されます (1 回だけ)。だから私はあなたのaniMation関数を再帰的に呼び出すように変更しました。

于 2012-04-23T06:22:12.977 に答える
1

setTimeout を 1 回だけ呼び出します。関数を続行する必要がある場合は、aniMation の最後に setTimeout を呼び出すことをお勧めします。setInterval を使用することはお勧めしません。

于 2012-04-23T06:23:45.957 に答える
1

上と左の変数をグローバルにします。毎回、反復ごとに両方の vcalue 1 を再初期化するためです。グローバルの場合、インクリメントします:

var top=0;
var left=0;

function aniMation(){
    $('#frame').css({top:++top,left:++left})
}


$(function () {
    setInterval(aniMation,5000)
});
于 2012-04-23T06:26:47.863 に答える
0

次のように試してください:

var f   = $('#frame'), 
    top = 0, left = 0;

function aniMation(){
    f.css({top: (++top)+ 'px', left: (++left) + 'px'})    
}

top関数を実行するたびにleftプロパティが0にリセットされるため、例は1回だけ機能します。

また、iframe 要素への外部参照を作成した方がよいため、関数呼び出しごとに新しいものを再作成する必要はありません。

于 2012-04-23T06:21:32.383 に答える