Javascript 当getElementById返回null时取消对属性/方法的访问

Javascript 当getElementById返回null时取消对属性/方法的访问,javascript,dom,null,getelementbyid,Javascript,Dom,Null,Getelementbyid,出于各种原因,有时在对DOM元素调用document.getElementById时,会返回空引用。这很好,但如果我试图立即访问null引用的某些属性/方法,就会出现错误 例如,对于以下代码,如果DOM中没有ID为a的元素,则尝试访问返回的null值的style属性将失败: document.getElementById('a').style.background = 'red'; 是否有任何方法可以编写一个函数等,使用document.getElementById获取DOM元素,并且在返回n

出于各种原因,有时在对DOM元素调用
document.getElementById
时,会返回空引用。这很好,但如果我试图立即访问null引用的某些属性/方法,就会出现错误

例如,对于以下代码,如果DOM中没有ID为
a
的元素,则尝试访问返回的
null
值的
style
属性将失败:

document.getElementById('a').style.background = 'red';
是否有任何方法可以编写一个函数等,使用
document.getElementById
获取DOM元素,并且在返回
null
时,取消对该null引用的DOM属性/方法的任何立即访问尝试


提前谢谢。

只需将其存储在变量中,这样您就可以缓存对元素的引用:

var aTag = document.getElementById('a');
if(aTag != null) {
  aTag.style.background = 'red';
}
但如果确实需要函数,则可以将匿名函数传递给仅在第一个参数不为null时调用的方法:

safeAccess(document.getElementById("aTag"), function(a) {
  a.style.background = 'red';
});

function safeAccess(elem, scriptToExecute) {
  if(elem != null) {
    scriptToExecute(elem);
  }
}

先检查它是否为空

if (document.getElementById('a'))
    document.getElementById('a').style.background = 'red';

您可以将其包装在try/catch块中。无论该块内部发生什么,执行都将继续。但“能”并不意味着“应该”。这样编写的代码可能更难调试

try {
    document.getElementById('a').style.background = 'red';
} catch (o) {}

同意并不意味着应该,您将忽略该行代码中可能出错的许多内容。如果您一次循环1000次,否则它将执行相同的操作。我同意。如果我要在一行中引用同一DOM元素两次,我肯定会首先将其存储在变量中。诚然,在小范围内,in并不重要,但我认为,在JS中,这不是一个好的编码实践。答案很好。非常感谢。我希望有一些内置函数等,可以让您取消空引用上的所有后续操作,但是您的函数工作得很好,它不需要对DOM进行任何附加调用,也不需要您首先将DOM元素存储在变量中。非常感谢你。