0
n個のdivタグを循環し、一度に1つしか表示されず、10秒ごとに変更されるJavaScriptがあります。これは機能しています。しかし、次のボタンと前のボタンもあります。私は次または前をクリックすると、1つのdivをスキップしているように見えます。JavaScriptタイマー - クリア、設定の変更、divのサイクリング
誰かが助けることができますか?
これを行うためのより良い方法に関する提案も歓迎します。私はjQueryを初めて使うので、とにかくやってみたい改善について知っています。ありがとう!!!
jQuery(document).ready(function() {
var counter = 1;
var delay = 3000; //10 seconds = 10000
var lastItem = jQuery('table[id^=featuredNo]').length - 1;
var previous = 0;
var timerID;
//argument is increment
//false is decrement
function updateCounter(increment) {
if (increment) {
counter = (counter >= lastItem) ? 0 : counter + 1;
previous = (previous >= lastItem) ? 0 : previous + 1;
} else {
counter = (counter <= 0) ? lastItem : counter - 1;
previous = (previous <= 0) ? lastItem : previous - 1;
}
}
function displayNext() {
//alert("testt" + counter);
//hide everything but current
jQuery("table[id^=featuredNo]").hide();
jQuery("#featuredNo" + counter).show();
//incrememnt the counter, so next time we show the next one
updateCounter(true);
};
//set click handlers for previous
jQuery('a[id^=featuredPrevious]').click(function() {
clearInterval(timerID);
updateCounter(false);
displayNext();
timerID = setInterval(displayNext, delay);
});
//set click handlers for next
jQuery('a[id^=featuredNext]').click(function() {
clearInterval(timerID);
updateCounter(true);
displayNext();
timerID = setInterval(displayNext, delay);
});
//start interval
timerID = setInterval(displayNext, delay);
});
私が持っている理由私は少し混乱しています前進するときには2倍減少し、増加しない。あなたは説明できますか?私はコードを書いて以来、私が作成したバグを見落としていると思います。いずれにせよ、私は永遠に感謝しています!ありがとう! – Hoppe
displayNext()はupdateCounter(true)自体を呼び出します。次のボタンハンドラでもupdateCounterを呼び出したので、カウンタを2回インクリメントしてdivをスキップします。また、前のdivを表示するには、カウンタを2回戻す必要があります。なぜなら、1回だけ後ろに移動するだけで、同じdivを何度も繰り返し表示するからです。 –
私はカウンターを更新する前に次のものを表示しているようですが、あなたの修正はそのトリックでした!だから、私はあなたの言葉を受け取ります。再度、感謝します – Hoppe