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

PC自选配件装机网站金额汇总功能失效代码问题咨询

问题定位

你代码的异常主要来自以下几个原因:

  • 变量声明不规范
    你在sumafactura函数中直接使用未声明的TotalSI变量,会导致它被隐式挂载为全局变量,极易和其他逻辑的变量产生冲突,而且你之前提前声明的TotalsinIva变量拼写和它不一致,完全没有被用到,属于无效声明。
  • eval的错误使用
    用eval解析select的value非常危险且不稳定:如果某一个配件的option值不是合法的数字表达式(比如为空、带货币符号、是提示文字),eval会直接抛出错误,导致整个计算逻辑中断。即使是练习项目也不推荐使用eval做数值转换。
  • 缺失数值合法性校验
    没有对每个选中的配件值做数字校验,当用户未选择配件、或者对应option的value是非数字内容时,累加值会变成NaN,最终金额显示就会异常。
  • 代码转义问题
    你贴出的代码里存在"、<这类HTML转义字符,如果你的实际运行代码里也是这么写的,会直接触发语法错误,导致函数无法运行。
修复方案

你可以直接替换sumafactura函数的逻辑为以下内容:

function sumafactura() {
    // 显式声明局部变量,避免全局污染
    let TotalSI = 0;
    const productos = document.getElementsByTagName("select");
    for (let i = 0; i < productos.length; i++) {
        // 安全转换为数字,非数字值直接跳过
        const precio = Number(productos[i].value);
        if (!isNaN(precio)) {
            TotalSI += precio;
        }
    }
    // 原有输出逻辑保留
    document.getElementById("Total").value = TotalSI.toFixed(2) + " €.";
    iva = (TotalSI * 18 / 100);
    document.getElementById("Iva").value = iva.toFixed(2) + " €.";
    TotalFinal = TotalSI + iva;
    document.getElementById("TotalTotal").value = TotalFinal.toFixed(2) + " €.";
}

修复后请额外检查所有配件<select>的<option>的value属性值,确保只填写纯数字,不要带€、空格、文字等多余内容,示例正确写法:

<option value="99.99">ATX机箱 99.99€</option>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:18:02