Javascript 当getElementById返回null时取消对属性/方法的访问
出于各种原因,有时在对DOM元素调用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
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元素存储在变量中。非常感谢你。