無限にループしたい画像の配列があります。1、2、3、1、2、3 .. ..
最初は、次のコードを使用してこれを実行しようとしました。
var images = [
"/images/image1.jpg",
"/images/image2.jpg",
"/images/image3.jpg"
];
var obj = { currentValue: 0 };
var maxValue = 2;
//loop through the items
var infiniteLoop = setInterval(function() {
if(obj.currentValue == maxValue) {
obj.currentValue = 0;
}
// ... Code to fade in currentItem ...
obj.currentValue++;
}, 5000);
これは参照によって変数を渡す正しい方法であると読みましたが、何らかの理由で、すべての画像がループされたときにobj.currentValueを0に戻すことはできません。
別の方法は、htmlフィールドの値を設定することだと思いました。
var images = [
"/images/image1.jpg",
"/images/image2.jpg",
"/images/image3.jpg"
];
var maxValue = 2;
//loop through the items
var infiniteLoop = setInterval(function() {
if(parseInt($('#currentItem').val()) == maxValue) {
$('#currentItem]').val('0');
}
//... code to fade in currentItem ...
var tmp = parseInt($('#currentItem').val());
tmp++;
$('#currentItem').val(tmp);
}, 5000);
<input type="hidden" id="currentItem" name="currentItem" value="0" />
しかし、私はまだ同じ問題を抱えています。何らかの理由で、画像リストの最後に到達するたびに、非表示フィールドの値を設定できず、無限ループが再開されません。
ここで明らかな何かが欠けていますか?これを機能させる方法がわからないようです。
誰かがこれを達成するためのより効率的な方法を持っているなら、あなたがそれを共有することができれば私も非常に感謝します:-)
ありがとう