Sie die aktuelle Zeit als Index verwenden könnten, die aus dem Jahr 1970 zählen eher als die willkürliche Zeit die Benutzer die Website eingegeben.
Wie des Schreibens, der aktuelle Zeitstempel ist 1493684749486.
var d = new Date();
// +d === 1493684749486
den aktuellen Zeitstempel in ein Array-Index zu konvertieren, müssen Sie die Anzahl der Millisekunden in einer Woche wissen (1000 * 60 * 60 * 24 * 7), dann herauszufinden, wie viele Wochen seit 1970.
var index = Math.floor(+d/(1000*60*60*24*7));
// 2469 weeks have passed since 1970
// output `mind[index]` now.
aus Gründen der hier Antwort vergangen sind, werde ich Sie ändern möchten den Artikel am Freitag um 09.00 Uhr zu übernehmen. Die nächstgelegene um 9 Uhr Freitag ist 1494000000000.
d.setMilliseconds(0);
d.setSeconds(0);
d.setMinutes(0);
d.setHours(9);
d.setDate(d.getDate() + (7 + 5 - d.getDay()) % 7); // How many days away is Friday from Monday? Add that to the current date.
Die 315.250.514 Millisekunden entfernt. Sie setzen Timeout so lange, bis die nächste Änderung gestartet wird.
Wenn sich das Element ändert, starten Sie eine neue Zeitüberschreitung für die folgende Änderung. Dies wird gegenüber setInterval bevorzugt.
function displayNextItem() {
var d = new Date();
var timestamp = +d;
var index = Math.floor(timestamp/(1000*60*60*24*7));
wfmind.innerHTML = mind[index % mind.length];
d.setMilliseconds(0);
d.setSeconds(0);
d.setMinutes(0);
d.setHours(9);
d.setDate(d.getDate() + (7 + 5 - d.getDay()) % 7); // How many days away is Friday from Monday? Add that to the current date.
setTimeout(displayNextItem, +d - timestamp);
}
displayNextItem();
Speichern Sie die Zeit, die Sie das Element gezeigt haben, und den Array-Index in 'localStorage'. Dann, wenn sie zurückkommen, holen Sie sich die Zeit vom lokalen Speicher, vergleichen Sie sie mit der aktuellen Zeit, und wenn es mehr als eine Woche dauert, erhöhen Sie den Index und zeigen Sie das nächste Mal. – Barmar
Ich bin mir nicht sicher, ob ich folge. Sie möchten die Verzögerung (derzeit 1000ms oder 1 Sekunde) auf 1 Woche ändern, aber nicht wirklich 1 Woche warten? Das scheint widersprüchlich zu sein. Für Debugging-Zwecke möchten Sie es natürlich bei 1 Sekunde oder etwas in der Nähe behalten. – Extragorey
@Extragorey Ich denke, er meint, er will 'setInterval()' nicht benutzen, um eine Woche zu warten. Wahrscheinlich, weil der Benutzer die Seite nicht die ganze Zeit offen hält, also wird es nicht funktionieren. – Barmar