私はJavascriptとjQueryを学び始めています。 jQueryで簡単なスライドショーを作って、並べ替えられていないリスト項目を1つずつ表示したかったのです。javascriptの実行順序
私のコードはここにある:on jsfiddle
私はforループでリスト項目を反復処理することにより、スライドショーを作成し、以下のようなフェードインとフェードアウト効果でそれらを表示したいと思った:
for(var i = 0; i < 3; i++)
{
$('#slider li:nth-child('+ i +')')
.fadeIn()
.delay(1000)
.fadeOut();
}
しかし、それはリストの最後の項目だけを表示します。
私はi
の値がループ内で2に増加していると見なすJavascriptスコープのため、別の関数で変数i
の値を閉じる必要があることを読んだ。だから、私はi
の値を閉じて、関数を呼び出した別の関数を作った。しかしそれはまだ同じで、リストの最後の項目を表示しています。
だから、私はちょうど以下のようなリスト項目に2つの別々の効果を作ることによってループせずに試してみたかった:
$('#slider li:first-child')
.fadeIn()
.delay(1000)
.fadeOut();
$('#slider li:nth-child(2)')
.fadeIn()
.delay(1000)
.fadeOut();
をしかし、それは順番に上に書いたようなリスト項目を表示しません。コードを実行すると、最初の項目が本当に速く表示され、最後の項目が意図したとおりに表示されるようです。
私はCコードまたはJavaコードのように書いており、上から下に実行すると考えています。しかし、それはJavascriptが異なっているようだと私はJavascriptの主要な概念を理解していない。
私の質問は、リスト項目を順番に表示せず、最後の項目のみを表示するのではなく、それを意図的に機能させるために何を知る必要があるのかということです。
ありがとうございます。
感謝を「1インデックス」
:nth-child(n)
のjQueryの実装は厳密にCSSの仕様に由来し、nの値がある答えを皆! – Ari