You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);

说明:

  1. 每次触发函数时先清空change-due,确保任何场景下区域初始状态为空
  2. 新增无效输入判断,提前拦截异常输入,避免后续逻辑出错
  3. 保留原有核心逻辑,同时解决了支付不足时内容残留的问题

内容的提问来源于stack exchange,提问作者Rajvir Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:53:09