freeCodeCamp收银机项目:金额不足时change-due区域未清空求助
问题修正方案:支付金额不足时清空change-due区域
你的代码核心问题是:当顾客支付金额低于商品价格时,只触发了alert提示,但没有清空change-due区域的原有内容,导致旧内容残留。
修正步骤:
- 在
price > cashInput的条件分支内添加清空change-due的代码 - 补充处理无效输入(非数字、输入为0)的逻辑,避免后续计算出错
修改后的完整代码:
function changeReturn() { let price = 1.87; let cid = [ ["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100] ]; const cashInput = Number(document.getElementById("cash").value); const changeDue = document.getElementById("change-due"); const cashRegister = document.getElementById("cash-register"); // 先清空change-due,避免旧内容残留 changeDue.innerText = ""; // 处理无效输入:非数字、输入为0或负数 if (isNaN(cashInput) || cashInput <= 0) { alert("请输入有效的支付金额"); return; } const balance = cashInput - price; if (price > cashInput) { alert("Customer does not have enough money to purchase the item"); } else if (balance === 0) { changeDue.innerText = "No change due - customer paid with exact cash"; } // 可在此补充正常找零的逻辑 } const purchaseBtn = document.getElementById("purchase-btn"); purchaseBtn.addEventListener("click", changeReturn);
说明:
- 每次触发函数时先清空
change-due,确保任何场景下区域初始状态为空 - 新增无效输入判断,提前拦截异常输入,避免后续逻辑出错
- 保留原有核心逻辑,同时解决了支付不足时内容残留的问题
内容的提问来源于stack exchange,提问作者Rajvir Saini
相关产品推荐
相关产品推荐

