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

存款累计计算脚本问题求助:每日追加10%收益功能未实现

解决方案

原代码的核心问题是每次调用calculate都会重新从输入框读取存款额并重新计算初始10%收益,没有持久化存储累计收益和追踪天数,导致无法实现每日追加的逻辑。以下是修复后的完整实现:

关键改进点

  • 用全局变量持久化存储累计收益、每日追加额和已过天数,避免每次计算重置数据
  • 首次计算时初始化所有核心数值,后续仅处理每日追加逻辑
  • 加入输入有效性校验,防止非数字/负数输入
  • 30天到期后自动停止定时器,避免无效执行
  • 格式化金额显示,保证小数点后两位的规范格式

修复后的代码

// 全局变量存储核心计算数据
let totalEarnings = 0;
let dailyAddition = 0;
let daysPassed = 0;
const MAX_DAYS = 30; // 设定最大追加天数

function calculate() {
  // 首次执行:初始化初始收益和每日追加额
  if (daysPassed === 0) {
    const deposit = parseFloat(document.getElementById("deposit").value);
    // 校验输入有效性
    if (isNaN(deposit) || deposit <= 0) {
      document.getElementById("deposit_display").innerHTML = "请输入有效的存款金额";
      return;
    }
    // 初始收益 = 存款额 × 10%
    totalEarnings = deposit * 0.1;
    // 每日追加的等额金额 = 存款额 × 10%
    dailyAddition = deposit * 0.1;
  }

  // 仅在30天内执行追加逻辑
  if (daysPassed < MAX_DAYS) {
    // 从第2天开始追加收益(第1天显示初始收益)
    if (daysPassed > 0) {
      totalEarnings += dailyAddition;
    }
    daysPassed++;
    // 格式化并更新显示
    document.getElementById("deposit_display").innerHTML = totalEarnings.toFixed(2);
    
    // 30天到期后停止定时器并提示
    if (daysPassed === MAX_DAYS) {
      clearInterval(window.earningInterval);
      document.getElementById("deposit_display").innerHTML += "(已完成30天收益追加)";
    }
  }
}

// 页面加载时先计算并显示初始收益
calculate();

// 测试阶段可使用1000毫秒(1秒)模拟每日周期,上线后改为86400000(24小时)
window.earningInterval = setInterval(calculate, 1000);

使用说明

  1. 输入有效的存款金额后,页面会立即显示初始10%的收益
  2. 每经过一个周期(测试时1秒,上线后24小时),会自动追加等额的10%存款收益
  3. 满30天后,定时器自动停止,显示完成提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:19