[英]show a given number every day of the week, then get back to day 1 in JS
我需要在 div 中創建一個給定的數字,一周中的每一天的數字都不同,但在一周的最后一天結束時,數字應該是第一天的數字。 我試圖制作這個腳本,但我只能顯示第 1 天的數字,第 2 天、第 4 天等根本沒有改變,我做錯了什么?
順便說一句,我有幾個 div,每個 div 的數字必須不同,所以我使用Content.makeNumber = function (day1, day2, day3, day4, day5, day6, day7
。而且數字應該在之后增加重新加載,所以我從localStorage
獲取日期
const Content = {};
Content.makeNumber = function (day1, day2, day3, day4, day5, day6, day7) {
let date = localStorage.getItem("date");
const week = 60*60*24*7;
if (date === null) {
const now = Date.now();
localStorage.setItem('date', 'now');
localStorage.setItem('dateWeekEnd', 'now' + 'week');
return day1;
} else {
}
date = Number(localStorage.getItem('date'));
const dateNow = Number(localStorage.getItem('dateWeekEnd'));
const dateCount = (dateNow - date) / week;
let res
switch (dateCount) {
case 1:
res = day1;
break;
case 2:
res = day2;
break;
case 3:
res = day3;
break;
case 4:
res = day4;
break;
case 5:
res = day5;
break;
case 6:
res = day6;
break;
case 7:
res = day7;
break;
default:
res = day1;
break;
}
return res;
};
export default Content;
JavaScript 的日期有一個getDay
function 返回一個從 1 到 7 的數字,你可以使用它。
或者,模( %
)也適用於您
switch (dateCount % 7 + 1) {
...
}
可能對你有用
for(let i = 0; i <= 32; i ++){ console.log(i, " becomes: ", i % 7 + 1) }
僅當設置了本地存儲中的“日期”變量時,您才調用 Date.now()。 當你這樣做時,你在 localstorage 中設置了“dateWeekEnd”並且不再更新它。 這導致它不會改變。
我想你想要的是替換
const dateNow = Number(localStorage.getItem('dateWeekEnd'));
和
const dateNow = Date.now()
以便它根據當前日期進行更新。
我們還想稍微改變一下 DateCount 的數學。 它應該是
const dateCount = Math.floor(((dateNow - date) / week)*7)%7;
因為 (dateNow-date) 給出了自 date 以來已經過去了多少毫秒,除以周告訴我們一周的哪一部分已經過去。 乘以 7 得到當天。 將它放低以獲得 integer 而不是小數。 取模 7,因此如果達到 7,它會循環回 0。然后 dateCount 是從 0-6 的 integer。 要保留當前的 switch 語句,請添加 1 使其成為 1-7。
但是,我建議使用數組來存儲日期單詞,並使用 dateCount 作為該數組的索引以避免長的 switch 語句。 總之,這給了我們
const Content = {};
Content.makeNumber = function (dateWords) {
let date = localStorage.getItem("date");
const week = 60*60*24*7;
if (date === null) {
const now = Date.now();
localStorage.setItem('date', 'now');
localStorage.setItem('dateWeekEnd', 'now' + 'week');
}
date = Number(localStorage.getItem('date'));
const dateNow = Date.now();
const dateCount = Math.floor(((dateNow - date) / week)*7)%7;
let res = dateWords[dateCount]
return res;
};
export default Content;
其中 dateWords 是一個包含 [day1, day2, ... day7] 的數組
要進一步清理它,請考慮將 week 變量替換為 day 變量會如何改變數學,以及是否需要在 localstorage 中設置 dateWeekEnd。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.