在前面幾天,我們完成了新增、刪除、localStorage 資料持久化,以及精美的分類色彩標籤。不過,畫面最上方的總覽看板(今日支出、本月已花費)一直都還是寫死的 $ 0,真的是讓人覺得沒花什麼錢誒。
今天核心任務就是:讓總覽卡片與資料庫連動! 當使用者新增或刪除消費時,系統會自動比對日期,即時計算出「今日花費」與「本月累積花費」,打造真正的互動式儀表板。
為了計算今日與本月的花費,我們利用 JavaScript 的 Date 物件取得今天的日期字串(格式為 YYYY-MM-DD),並截取前七碼作為當前年月(YYYY-MM):
// 取得今天的日期字串 (格式: YYYY-MM-DD)
const todayStr = new Date().toISOString().split('T')[0];
// 取得當前年月 (格式: YYYY-MM)
const currentYearMonth = todayStr.slice(0, 7);
我們在每次執行 renderExpenses() 重新畫畫面時,順便用迴圈跑過所有的消費紀錄:
1.比對今日:如果該筆紀錄的日期等於今天,就將金額累加到 todayTotal。
2.比對本月:如果該筆紀錄的日期開頭符合當前年月,就累加到 monthTotal。
3.即時更新畫面:計算完後,透過 textContent 把數字填入上方的總覽卡片中。
let todayTotal = 0;
let monthTotal = 0;
expenses.forEach(function(item) {
const amountNum = Number(item.amount) || 0;
// 計算今日支出
if (item.date === todayStr) {
todayTotal += amountNum;
}
// 計算本月支出
if (item.date.startsWith(currentYearMonth)) {
monthTotal += amountNum;
}
});
// 即時更新上方儀表板看板文字
document.getElementById('today-total').textContent = `$ ${todayTotal}`;
document.getElementById('month-total').textContent = `$ ${monthTotal} / $ --`;

經過這七天的努力,我們的「大學生記帳與消費分析網站」第一階段總覽儀表板正式大功告成!不僅有漂亮的介面、持久化的資料,還有即時計算的動態統計。
明天我們將進入第二週的挑戰,解鎖更多精彩功能,我們明天見!