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

如何阻止longlost函数在字段为空或值为0时默认触发折扣计算

解决longlost函数在#months为空或0时触发折扣的问题

当前longlost函数在#months字段为空或值为0时,会默认应用20%折扣,需要从函数执行初期就阻止该行为。

你之前尝试的代码问题:

你写的if (months.length==0)逻辑错误,因为parseFloat()返回的是数字(或NaN),数字类型没有length属性,所以这个判断永远不会成立,自然无法触发return阻止后续逻辑。另外你重复声明了var months,属于冗余代码。

正确的修改方案:

需要先判断输入值是否为空,或者转换后的数字是否为0/非有效数字,只要满足任一条件就直接终止函数执行:

function longlost() {
  // 获取输入框的原始值
  const monthsInput = document.querySelector('#months').value;
  // 转换为数字
  const months = parseFloat(monthsInput);

  // 判断:输入为空、数字为0、或者不是有效数字时,终止函数
  if (!monthsInput || months <= 0 || isNaN(months)) {
    // 可清空结果框避免显示错误价格
    document.getElementById("result").value = "";
    return;
  }

  // 只有符合条件时才计算折扣价格
  const finalPrice = (getServicePrice() + extraPrices()) * getDiscountPercent(months);
  document.getElementById("result").value = "€" + finalPrice;
}

逻辑说明:

  • !monthsInput:覆盖输入框为空字符串的情况
  • months <= 0:处理输入0或者负数的情况
  • isNaN(months):处理输入非数字内容(如字母、符号)的情况
  • 满足任一条件时,清空结果框并return,直接终止函数,不会执行后续的折扣计算逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:55:17