私は、jqueryを使用してjavascriptでスライドショーをコーディングしている最中に、数行のコードが数行で実行していたことを実行していることに遭遇しました。
問題は、それがどのように機能するのか理解していないので、変更できることです。
var imgs = [
'image1.jpg',
'image2.jpg',
'image3.jpg'];
var cnt = imgs.length;
$(function() {
setInterval(Slider, 4000);
});
function Slider() {
$('#imageSlide').fadeOut("slow", function() {
$(this).attr('src', imgs[(imgs.length++) % cnt]).fadeIn("slow");
});
}
これは私を得る線です:
[(imgs.length++) % cnt]
私はそれを次のように読んでいます
3+1 % 3 = 1
これで、実行するたびに、そのコードのいずれも変数を変更していないように見えます。
常に(3)にcnt
等しくなりますが、実際には変更されません。その1回の実行に対して1つ追加されるだけですよね?imgs.length
imgs.length++
したがって、実行回数に関係なくimgs[1]
、コードを実行すると、すべての配列オブジェクトを適切に実行します。
編集:
変数を実際に変更することを追加alert(imgs.length);
して確認しただけ++
ですが、それでも意味がありません。
imgs.length = 4
++後の最初の実行。4 % 3 = 1
したがって、配列オブジェクトを実行する必要は[1]
ありません[0]
か?
2回目の実行、5 % 3 = 2
3回目の実行、6 % 3 = 0
などなど。ただし、リセットしないでください。しかし、私がそれを置くと、alert(imgs.length % cnt);
それはリセットされるよりも0、1、2しか返しません。
なんで?