由于各种原因,有时当我在DOM元素上调用document.getElementById
时,我会得到一个空引用。这没关系,除非我尝试立即访问空引用的某些属性/方法,否则我将收到错误。
例如,使用以下代码,如果DOM中没有ID为a
的元素,则尝试访问返回的style
值的null
属性会失败:
document.getElementById('a').style.background = 'red';
有没有办法编写使用document.getElementById
来获取DOM元素的函数等,并且在返回null
的情况下,取消对DOM属性/方法的任何立即访问尝试那个空引用?
提前谢谢。
答案 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';