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

JavaScript使用for循环拼接访问表单元素实现复选框值求和问题

问题根因

你遇到的写法错误核心是对象属性访问规则的问题:

  • 用点号访问对象属性时,后面跟的内容会被当做固定的属性名,不会解析为变量,所以forms[2].i实际是在找名字为i的表单元素,而非你循环变量i对应的数字名元素
  • 模板字符串${i}不能直接跟在点号后使用,只有放在方括号内才会被解析

修改方案

把循环内的点号属性访问改为方括号属性访问即可,修改后的完整JS代码如下:

calculerScore = () => {
    var resultat = 0;
    for (let i = 1; i <= 10; i++) {
        // 方括号内的i会被解析为循环变量,拿到对应name的表单元素
        if (window.document.forms[2][i].checked) {
            resultat += Number(window.document.forms[2][i].value);
        }
    }
    window.document.forms[2].score.value = resultat;
}

可选优化建议

如果页面表单数量变化导致forms[2]索引不准,可以直接给表单加id,用id选择器定位更稳定,比如给form加id="gameForm",之后用document.getElementById('gameForm')访问即可,不用依赖表单的索引顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:54:04