当getElementById返回null时,取消对property /方法的访问

时间:2013-07-27 14:44:47

标签: javascript dom null getelementbyid

由于各种原因,有时当我在DOM元素上调用document.getElementById时,我会得到一个空引用。这没关系,除非我尝试立即访问空引用的某些属性/方法,否则我将收到错误。

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

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

有没有办法编写使用document.getElementById来获取DOM元素的函数等,并且在返回null的情况下,取消对DOM属性/方法的任何立即访问尝试那个空引用?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

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

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);
  }
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

首先检查它是否为空。

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