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

如何处理测验跳过问题时getAttribute报Null错误并返回N/A?

解决测验跳过问题时的Null TypeError错误

问题出在你直接链式调用querySelector和getAttribute——当问题被跳过时,目标元素不存在,querySelector返回null,这时调用getAttribute就会触发Cannot read properties of null的错误,根本没机会进入你写的oldValue判断逻辑。

修复方案1:分步判断元素是否存在

先单独获取元素,确认元素存在后再读取属性,同时处理属性为空的情况:

// 先获取目标元素
const answerElement = document.querySelector(".quiz_selected_answer input[name='question-2']");
let newValue;

if (!answerElement) {
    // 元素不存在,说明问题被跳过
    newValue = "N/A";
} else {
    // 元素存在,读取data-value属性
    const oldValue = answerElement.getAttribute('data-value');
    // 如果属性为空也设为N/A
    newValue = oldValue ? oldValue : "N/A";
}

修复方案2:用可选链简化代码(ES2020+支持)

如果你的运行环境支持ES2020及以上,可以用可选链操作符?.和空值合并运算符??简化代码,效果和上面一致:

// 可选链:元素不存在时返回undefined,不会报错
const oldValue = document.querySelector(".quiz_selected_answer input[name='question-2']")?.getAttribute('data-value');
// 空值合并:oldValue为undefined或null时,设为N/A
const newValue = oldValue ?? "N/A";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:03