let html = ''; html += `min="0" step="1" value="0" data-price="${redStat.piece.avg || 0}">0`; html += `
红色 (格数)
0
`; html += `
推荐出价 0
预估仓位价值 0
`; html += `
`; // 渲染到页面 document.body.innerHTML = html; // ---------------- 以下是补全的核心逻辑 ---------------- // 工具函数:解决JS浮点数计算精度丢失问题 const preciseCalc = (num) => Math.round(num * 100) / 100; // 绑定所有输入框的实时计算事件 const bindEvents = () => { const avgGridInput = document.getElementById('gao_red_grid_avg'); const cntInput = document.getElementById('gao_red_grid_cnt'); const subGridEl = document.getElementById('gao_red_grid_sub'); const recEl = document.getElementById('gaoRec'); const totalEl = document.getElementById('gaoTotal'); const resetBtn = document.getElementById('gaoReset'); // 核心计算逻辑 const updateResult = () => { // 读取输入值,空值默认按0处理 const avgGrid = parseFloat(avgGridInput.value) || 0; const cnt = parseInt(cntInput.value) || 0; const pieceAvg = parseFloat(redStat?.piece?.avg) || 0; // 1. 计算红色格数小计 const gridSub = preciseCalc(avgGrid * cnt); subGridEl.textContent = gridSub; // 2. 计算推荐出价(这里默认按 单格均价 * 平均格数 逻辑,可按需修改业务公式) const recommendPrice = preciseCalc(pieceAvg * avgGrid); recEl.textContent = recommendPrice; // 3. 计算预估总仓位价值 const totalValue = preciseCalc(recommendPrice * cnt); totalEl.textContent = totalValue; }; // 输入变化时自动触发重计算 avgGridInput.addEventListener('input', updateResult); cntInput.addEventListener('input', updateResult); // 重置按钮逻辑 resetBtn.addEventListener('click', () => { avgGridInput.value = 0; cntInput.value = 0; subGridEl.textContent = 0; recEl.textContent = 0; totalEl.textContent = 0; }); }; // 页面渲染完成后再绑定事件,避免元素还没加载导致绑定失败 window.addEventListener('load', bindEvents);