JavaScript循环赋值innerHTML时拼接i+1变量报错解决
报错原因
你的代码存在三个核心问题:
- 存在非法语法:你直接把说明文字
( it gives me error)写在了JS执行语句里,JS引擎会将其识别为可执行代码,直接抛出语法错误。 - 拼接逻辑不符合预期:
response.age_error + i + 1遵循从左到右的运算规则,会先把i转成字符串和前面的错误文本拼接,再把1转成字符串拼接,最终得到的是类似错误内容01的结果,不是你要的「i加1后的值」;同时因为没有括号改变运算优先级,当response.age_error不是字符串类型时,还可能出现非预期的数值运算结果。 - 存在冗余代码:ID拼接部分末尾加的空字符串
+ ''没有实际作用,删掉不影响运行。
正确代码
将i+1用小括号包裹,强制优先计算i+1的数值,再参与字符串拼接,同时删除代码里的非法说明内容即可:
for (var i = 0; i < childs; i++) { document.getElementById('age_error' + (i + 1)).innerHTML = response.age_error + (i + 1); }
可选调整
如果你需要错误文本和序号之间有分隔符(比如冒号、空格),可以直接在拼接项里添加,例如:
// 效果类似「年龄不符合要求:1」 document.getElementById('age_error' + (i + 1)).innerHTML = response.age_error + ':' + (i + 1);
内容的提问来源于stack exchange,提问作者Zente1337
相关产品推荐
相关产品推荐

