如何重置跟蹤用戶當天是否完成操作的localStorage變數。boolean例如,當時間到達時8 am local time,它會將 重置boolean為false以顯示該操作尚未完成。
如果用戶當天完成了操作,則localStorage變數設定為true,我們將倒計時顯示為8 am。
這是我檢查當前時間和時間的方法,直到8 am。
const setActionCompleted = () => {
var hasCompleted = true;
localStorage.setItem("action-completed-today", JSON.stringify(hasCompleted));
}
const twoDigits = (number) => {
return (number < 10 ? '0' : '') number;
}
const countDown = () => {
var reset = new Date();
var now = new Date();
reset.setHours(8, 0, 0);
if(now > reset){
reset.setDate(reset.getDate() 1);
}
var timeToReset = ((reset - now) / 1000);
var hours = ~~(timeToReset / 60 / 60) % 60;
var minutes = ~~(timeToReset / 60) % 60;
var seconds = ~~timeToReset % 60;
return `${twoDigits(hours)}:${twoDigits(minutes)}:${twoDigits(seconds)}`;
}
const intervalId = setInterval(() => {
console.log(countDown());
}, 1000);
// clear interval after 10 seconds so its not running indefinitely
setTimeout(() => {clearInterval(intervalId)}, 10000);
uj5u.com熱心網友回復:
這里有幾個不同的選擇。您可以定期使該專案過期,然后執行localStorage.removeItem(),然后檢查您的布林值是否localStorage.getItem()找到符合您的條件的專案,而不是將關聯值更改為false。為此,您需要創建一個自定義包裝器,localStorage.setItem以便它可以在到期時間接受第三個道具,例如:
function setWithExpiry(key, value, interval) {
const now = new Date();
const item = {
value: value,
expiry: now.getTime() interval,
};
localStorage.setItem(key, JSON.stringify(item));
};
然后,當您從 localStorage 獲取專案時,如果當前時間超過專案的到期時間,則讓它從 localStorage 中按鍵洗掉專案并回傳 null。
function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if(!itemStr) {
return null;
}
const item = JSON.parse(itemStr);
const now = new Date();
if (now.getTime() > item.expiry) {
localStorage.removeItem(key);
return null;
}
return item.value;
}
從理論上講,如果您愿意,您可以將值重置為false找到它的時間(如果它已過期而不是洗掉它)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410913.html
標籤:
上一篇:在Perl哈希中查找最近的選項
