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

如何通过指定id的HTML标签输出JS函数结果?innerHTML失效问题

问题解决思路

你遇到的核心问题主要是这两个原因:

  • 之前保留的document.write(c)在页面加载完成后调用会清空整个页面,导致id为urscore的元素被删除,自然无法给它赋值。
  • 可能是urscore元素的id拼写错误,或者该元素根本不存在于HTML结构中。

修复步骤

  1. 彻底移除document.write(c),这是关键——只要这个方法存在,页面就会被清空,后续的元素赋值操作必然失效。
  2. 检查HTML元素,确保页面中存在如下结构的元素,id拼写完全一致(大小写敏感):
    <p id="urscore"></p>
    
  3. 优化代码逻辑(可选,但更严谨):表单元素的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:27:23