2017-06-07 5 views
0

JavaScriptのsetIntervalメソッドをjQueryエフェクトとともに使用すると、初期の表示はfadeInメソッドを使用しているようには見えません。突然「テキスト」が表示されます。Javascript setInterval:最初の間隔が急である

fadeIn()で始まるエフェクトの連鎖を通したその後の反復は、期待通りに実行されます。これは、 "テキスト"がfadeIn効果なしで突然表示される最初のパスです。

これはなぜ発生するのですか? ありがとうございます - JavaScriptの初心者です。

setInterval(myFunction, 1000); 
function myFunction() { 
    $('#myId').fadeIn(1500).html("text").delay(2750).fadeOut(1500).delay(1000; 
}; 
+2

素子の初期[ディスプレイ](https://developer.mozilla.org/en-US/docs/Web/CSS/display)は何ですか? DOM内の要素に割り当てられたスペースを維持したい場合は、オブジェクトがまだ表示されていない場合は、 'display'スタイルを' none'に設定するか、 'visibility'を' hidden'に設定します。 – Rafael

+0

私の要素のスタイリングは**表示**属性に対処していませんでした。 ** none **に設定すると、私の懸念に対処しました。ありがとう! – stumpjumper64

答えて

1

フェードインの後にテキストが追加されていることに気づかずにフェージングインになる可能性があります。フェードインする前にテキストを追加してください。 事前に表示されていないことを確認してください(CSSでも必要ですが)。

$('#myId').html("text").fadeIn(1500).delay(2750).fadeOut(1500).delay(1000); 
+0

ありがとうございます。提案のように注文を変更しても、残念ながら問題は解決されません。 – stumpjumper64

+0

は最初の場所に隠されたdivですか?それにはどんなCSSが使われていますか? – arsea

+0

それは、要素の** display **属性に対処していませんでした。 – stumpjumper64

0

あなたが空の要素に退色し、その後要素をフェードインされた後にのみtextにテキストを設定している、あなたのテキストが最初に空白と隠されていると仮定すると、これらの手順を逆:。

$('#myId').html("text").fadeIn(1500).delay(2750).fadeOut(1500).delay(1000); 

setInterval(myFunction, 1000); 
 
function myFunction() { 
 
    $('#myId').html("text").fadeIn(1500).delay(2750).fadeOut(1500).delay(1000); 
 
};
#myId { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="myId"> 
 

 
</div>

+0

私の間違いを明らかにするためにこのコードを提供していただき、ありがとうございます。この問題は、私の要素の**表示**属性が** none **に設定されていなかったことにありました。今レッスンを理解する。 – stumpjumper64

関連する問題