如何通过指定id的HTML标签输出JS函数结果?innerHTML失效问题
问题解决思路
你遇到的核心问题主要是这两个原因:
- 之前保留的
document.write(c)在页面加载完成后调用会清空整个页面,导致id为urscore的元素被删除,自然无法给它赋值。 - 可能是
urscore元素的id拼写错误,或者该元素根本不存在于HTML结构中。
修复步骤
- 彻底移除
document.write(c),这是关键——只要这个方法存在,页面就会被清空,后续的元素赋值操作必然失效。 - 检查HTML元素,确保页面中存在如下结构的元素,id拼写完全一致(大小写敏感):
<p id="urscore"></p> - 优化代码逻辑(可选,但更严谨):表单元素的
value默认是字符串类型,直接和数字比较容易出现隐性问题,建议转成数字后再计算。同时可以增加元素存在性判断,避免控制台报错。
修改后的代码如下:
function check(){ var c = 0; // 获取所有选项值并转为数字,避免字符串比较的隐性问题 var option = [ parseInt(document.quize.options1.value, 10), parseInt(document.quize.options2.value, 10), parseInt(document.quize.options3.value, 10), parseInt(document.quize.options4.value, 10), parseInt(document.quize.options5.value, 10), parseInt(document.quize.options6.value, 10), parseInt(document.quize.options7.value, 10), parseInt(document.quize.options8.value, 10), parseInt(document.quize.options9.value, 10), parseInt(document.quize.options10.value, 10) ]; // 直接循环选项数组更稳妥,避免和questionsarea数量不匹配的问题 for(let i=0; i<option.length; i++){ // 简化计分逻辑,只处理有效取值范围 if (option[i] >= 0 && option[i] <= 3) { c += option[i]; } } // 先确认元素存在再赋值,避免报错 var scoreElement = document.getElementById('urscore'); if(scoreElement){ scoreElement.innerHTML = c; } else { console.error('找不到id为urscore的元素,请检查HTML结构'); } }
额外说明
- 如果你的
questionsarea类元素数量和选项数量不一致,循环时会出现计数偏差,直接循环option数组更稳妥。 - 用
parseInt转数字时加上第二个参数10,可以避免浏览器把以0开头的字符串解析为八进制数的意外问题。
内容的提问来源于stack exchange,提问作者Md Yeasin
相关产品推荐
相关产品推荐

