2017-12-06 8 views
1

#changingwordに表示されている単語にいくつかのjsを書いています。しかし、最初に読み込んだときに2番目の単語をスキップして、「開発」を表示せずに「デザイン」から「電子商取引ソリューション」にまっすぐに移行します。最初のループの後、正しく動作します。私のコードは以下の通りです。最初の項目が欠落しています

HTML:

<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12"> 
    <h1>Creative Development</h1> 
    <h2 id="changingword">Design</h2> 
    </div> 

JS:

<script> 
(function(){ 
    var words = [ 
     'Development', 
     'E-commerce Solutions', 
     'Optimisation', 
     'Support', 
     'Design' 
     ], i = 0; 
    setInterval(function(){ 
     $('#changingword').fadeOut(function(){ 
      $(this).html(words[i=(i+1)%words.length]).fadeIn("slow"); 
     }); 
    }, 1500); 

})(); 
</script> 

すべてのアイデア、なぜこれが起こっているのでしょうか?

+0

あなた '私は=(i + 1)の' '私は++'とを交換してください。 – NuelG

+0

(i + 1)をi ++に置き換えないでください。++ iを使用すると、iの初期化を調整する必要があります。それを正しく使う方法と接頭辞と接尾辞の違いは何ですか? – DanteTheSmith

答えて

3

問題はここにある:あなたが計算で結果の値を使用してiその後、を更新している

$('#changingword').fadeOut(function(){ 
    $(this).html(words[i=(i+1)%words.length]).fadeIn("slow"); 
}); 

。それを使用後

更新i

$('#changingword').fadeOut(function(){ 
    $(this).html(words[i%words.length]).fadeIn("slow"); 
    i++; 
}); 
0

Iが[問題は単語を通る最初のパスで[I =(I + 1)%のwords.length]語と同等になることだと思います1]は単語[0]ではない。

あなたは同じ行に増加し、使用結果を行うことが難しいことができインクリメントが、

$('#changingword').fadeOut(function(){ 
      $(this).html(words[i++%words.length]).fadeIn("slow"); 
     }); 
0

を行うことによって、プリインクリメント値を返すことができ、あなたは式が評価されるかを確認する必要があります。

変更:

words[i=(i+1)%words.length] 

へ:i=-1;

words[i=(++i)%words.length] 

と設定が開始します。

ここで、(++i)は、残りの式の前にiが1だけインクリメントされるようにします。そのため、-1で開始する必要があります。そこからすべてが良いです。

増分で式を保持し、増分を別の行に分けたい場合は、すでに投稿されている回答の代わりに使用できます。

それはそれに探して価値があるので++ii++の一般的な違いは、多くの言語で同じです:

SO post with quick explanation

SO post with better explanation but in diff language

関連する問題