在完成了 HTML 結構與 RWD 響應式 CSS 切版後,今天我們正式邁入 JavaScript 邏輯實作 的第一個階段!
作為《醫藥健康數位工具箱》的首發核心模組,「生理指標計算器」 能讓使用者在幾秒鐘內輸入基本數據,一次算出三大關鍵指標:
今天我們將學習如何用原生 JavaScript 捕捉這些輸入數據,作為核心演算法的基石!
在寫 JavaScript 之前,很多新手常有一個疑問:「DOM 畫面會顯示給使用者嗎?」
答案是:會。使用者在網頁上看到的每一字每一畫,通通都是 DOM 呈現在螢幕上的視覺結果。
當我們用 JS 修改 DOM 節點時,瀏覽器會即時重繪畫面,讓使用者立刻看到計算結果的動態變化!
以下是我們 [Tool 1] 用於監聽按鈕、抓取欄位數值與防呆驗證的核心開頭邏輯:
DOMContentLoaded 的安全防護將程式碼包在 DOMContentLoaded 事件內,能確保瀏覽器先把 HTML 樹狀結構建構完畢後才執行 JS,徹底避免因抓不到 DOM 節點而產生的 Cannot read properties of null 錯誤。
if (!btnCalcTdee) return; 是一種專業的防錯寫法。若當前頁面找不到該按鈕,程式會優雅地直接結束,不會引發後續的報錯。
parseFloat() 與 parseInt()HTML <input> 讀取出來的 .value 預設都是字串 (String)。
parseFloat() 將身高、體重與活動量轉為浮點數(如 165.5),保障小數點的精準度。parseInt() 將年齡轉為整數。!h || !w || !age 可以攔截未填寫的空白欄位(轉為數字會變成 NaN,屬於假值);而 h <= 0 || w <= 0 則能防止使用者誤輸入 0 或負數,並透過 alert 彈窗提示後以 return 中斷執行,確保後續數學計算不會出錯。
今天我們成功建立了 [Tool 1] 生理指標計算器的安全防線,掌握了 DOM 事件監聽、欄位轉型 與 表單驗證!
在明天的 [Day 09] 中,我們將把通過驗證的數據帶入 BMI、Mifflin-St Jeor (BMR) 與 TDEE 數學公式 中,並把馬卡龍數字卡片渲染回 DOM 畫面上。