Javascript检查未定义的问题

Mai*_*ber 0 javascript

下面的代码在控制台中抛出一条错误消息,我不明白这个逻辑,因为在我的代码中,你可以看到我已经编写了if语句,应首先检查对象是否存在.

if (typeof document.getElementById("trbrok0").checked != "undefined") document.getElementById("trbrok0").checked = false;
if (typeof document.getElementById("trbrok1").checked != "undefined") document.getElementById("trbrok1").checked = false;
if (typeof document.getElementById("trbrok2").checked != "undefined") document.getElementById("trbrok2").checked = false;
if (typeof document.getElementById("trbrok3").checked != "undefined") document.getElementById("trbrok3").checked = false;
Run Code Online (Sandbox Code Playgroud)

就像你可以看到我们应该首先检查对象是否存在,然后尝试更改对象中"checked"属性的值.但我总是收到以下错误消息:

Uncaught TypeError: Cannot read property 'checked' of null
Run Code Online (Sandbox Code Playgroud)

Lie*_*Wen 5

因为document.getElementById("trbrok0")返回一个DOM节点,如果它不存在则返回null.null没有属性checked所以document.getElementById("trbrok0").checked抛出错误.

修复程序是添加一个检查节点是否首先存在 if(document.getElementById("trbrok0")!= null){ }