私は週に1つのプログラムを作成しようとしています。私は項目を表示するコードを持っていますが、長い間、私は項目を変更する前にコードを待つだけです。一度に1つのアイテムを配列の中に1週間表示し、その後一週間待たずに次のアイテムに進むことができますか?1週間に1つのアイテムをアレイに表示する方法
0
A
答えて
1
インデックスとして現在の時刻を使用できます。インデックスは、ユーザーがサイトに入った任意の時刻ではなく、1970からカウントされます。書き込みのよう
は、現在のタイムスタンプが1493684749486.
var d = new Date();
// +d === 1493684749486
は、配列のインデックスに現在のタイムスタンプを変換することです、あなたは週にミリ秒数を知っておく必要があります(1000年* 60 * 60 * 24 * 7)、その後、ここでの回答のために1970年
var index = Math.floor(+d/(1000*60*60*24*7));
// 2469 weeks have passed since 1970
// output `mind[index]` now.
経過したどのように多くの週を把握、私はあなたが午前9時で金曜日の項目を変更したいと仮定するつもりです。次の最も近い9時の金曜日は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.
これは315250514ミリ秒です。あなたは次の変更を開始するためにこの時間をsetTimeoutにします。
アイテムが変更されると、次の変更に対して新しいタイムアウトが発生します。これは、setIntervalよりも優先されます。
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();
+0
ありがとうございました!私たちはそれを持っているかもしれないと思う!私は来週にそれを確認してお知らせします。 –
関連する問題
- 1. ページ内に1つのアイテムを表示する方法AngularFire?
- 2. 1週間のみを表示する(営業時間、毎週同じ)
- 3. SQL Server:1週間に1週間の合計
- 4. foreach配列アイテムを1つ1つajaxで表示する
- 5. 1ページにwordpress CPTのアイテムを表示する方法
- 6. アイテムのリストを1行に表示する方法Xamarin.IOS
- 7. 週ごと、1日あたり、1時間あたりに表示するクエリ
- 8. 1つのラベルに3つのテキストボックスの時間を表示する方法は?
- 9. 1週間のみ表示するJavascript date picker?
- 10. Graylog2-ログ保持を1週間に設定する方法
- 11. リスト:1つのアイテムを時刻に表示する
- 12. 1週間のデータを毎週カスタム4週間の月に集計する
- 13. jQuery:1回のクリックで1つのアイテムを表示
- 14. WordPressのCPTアイテムを1ページに表示
- 15. 質問をシャッフルして配列の1つのアイテムを表示する方法
- 16. アレイを1つのセルに保存する方法は?
- 17. EL 1つの文で文字列アイテムの配列を表示する方法
- 18. 特定の単語が1週間に1列に表示される回数を計算します。
- 19. 2つの1Dアレイを1つの2Dアレイに変換する
- 20. テーブルの1行に3つのレコードを表示する方法
- 21. 1つのページに複数のハイチャートグラフを表示する方法
- 22. 複数のチェックボックスを1つのラベルに表示する方法
- 23. 一度に1つのツールチップのみを表示する方法
- 24. テキストを1週間に1回変更する
- 25. アレイから1つのアイテムを削除し、他のアイテムを後ろに移動
- 26. PHPコードを1週間に1回、ランダムに実行します。
- 27. 2つのチェックボックスを1行に表示する方法は?
- 28. ZF 1に2つのパスワードフィールドを表示する方法は?
- 29. 一度に1つのラベルボックスを表示する方法
- 30. git:コミットを1つのブランチに表示する方法
アイテムを表示した時間と、配列インデックスを 'localStorage'に保存します。その後、彼らが戻ってきたら、ローカルストレージから時間を取得し、それを現在の時間と比較し、1週間以上経過していれば、インデックスを増分して次回の時間を表示します。 – Barmar
私は私がフォローしているか分からない。遅延(現在の1000ms、または1秒)を1週間に変更したいのですが、実際には1週間待たないでしょうか?それは矛盾しているようです。デバッグの目的のために、それを1秒またはその付近の何かに保ちたいと思うでしょう。 – Extragorey
@Extragorey彼は、彼が週を待つのに 'setInterval()'を使いたくないと思うと思います。おそらく、ユーザーがページを開いたままにしないので、うまくいきません。 – Barmar