-1

関数呼び出しで show div 用にこの関数を作成しますが、この関数を実行し、 show の 1 秒後に停止する必要があります。

<script>

function repit_clouds(request)
{
  if (request=='no')
  {
    stop();
  }
  else
  {
    if (request=='ok')
    {
      var interval = setInterval(function() {
        $("#header_sun").fadeIn(4000);
        $("#header_sun").fadeOut(4000);
      },10000);
    }
  }
}

$(document).ready(function() 
{

  $("#header_sun").fadeIn(4000).delay(4000).fadeOut(4000);
  repit_clouds('ok');
  $("#header_background_clouds").fadeOut(2000).css("display","#none");
  $("#header_background_night").fadeIn(2000).css("background","#000").show(4000).fadeIn(2500);
  repit_clouds('no');
});
</script>

問題はrepit_clouds関数にあります。値を送信すると、関数は停止する必要がありますが、正常に機能せず、あたかも停止しないかのように続行しますrequest==ok。なぜ停止しないのかわかりません

4

1 に答える 1

2

ええと、あなたは正確に何をしていると思いますstop()か? もしかして:

$('#header_sun').stop()

その要素の既存のアニメーションを一時停止するのはどれですか?

それとも、インターバル タイマーも停止したいですか?

clearInterval(interval);

もちろん、関数を呼び出すたびにその値が失われないように、関数のintervalで宣言する必要もあります。

関数はまたは呼び出し.css()によってキューに入れられないことにも注意してください。これはアニメーション関数ではないため、これらの変更は常にすぐに行われます。.fadeOut().show().css()

同様に、 の 2 つの呼び出しrepit_clouds()もキューに入れられません。前のアニメーションのにそれらが実行されると予想される場合は、jQuery.queue()関数を調査するか、「アニメーション完了コールバック」中にそれらをトリガーする必要があります。

于 2013-03-22T13:56:48.583 に答える