在 Day 14 與 Day 15 中,我們建立了完整的雙欄介面與動態欄位切換。今天我們要為這個工具注入「大腦」——撰寫計算邏輯。
醫療資訊工具的關鍵在於計算精確與結果清晰。今天我們將透過點擊按鈕事件,抓取使用者輸入的成人劑量與兒童參數(年齡或體重),並依據選定的算式導出建議的兒童單次劑量(mg)。
在進入程式碼之前,我們再次複習這兩大藥學經典公式的數學表示式:
揚氏公式(Young's Rule,依年齡):
兒童劑量= 成人劑量 × 年齡/(年齡+12)
克拉克公式(Clark's Rule,依體重):
兒童劑量= 成人劑量 × 體重 (kg)/70 kg (或 150 lbs)
我們為 #btn-calc 按鈕綁定 click 事件監聽器,根據 #type 的選項進行分支計算:
/tool2-dosage.js
toFixed(1) 數值精確度控制藥物劑量通常不需要太多位小數,過長的浮點數(例如 166.66666666666666)會大幅降低 UI 的可讀性。使用 .toFixed(1) 能將結果四捨五入至小數點後第 1 位,更貼近臨床實際給藥的判定需求。
計算結果區塊 #result-tool2 在初始時擁有 .hidden Class。當使用者輸入資料並順利通過驗證後,執行 resultBox.classList.remove("hidden"),就能順暢且自然地將計算結果呈現給使用者!
在取得年齡或體重時,我們第一時間進行空值與非正數檢查(!age || age <= 0),一旦資料不合規立刻跳出提示並中斷(return),確保後續算式不被無效數字干擾。
今天我們成功實作了 [Tool 2] 的核心兒科劑量演算法,讓工具正式具備了精準計算與結果呈現的能力。
在明天的 [Day 17] 中,我們將進行 [Tool 2 劑量邊界防呆與無障礙 Alert 提示],針對兒童年齡上限(如 >18 歲不適用兒科公式)、極端體重輸入以及無障礙警示進行全方位的防禦強化。