iT邦幫忙

0

Day 07:儀表板「今日與本月支出」即時計算

  • 分享至 

  • xImage
  •  

在前面幾天,我們完成了新增、刪除、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} / $ --`;

https://ithelp.ithome.com.tw/upload/images/20260928/20184373AkxtLsaeOZ.png

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


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言