我试图找到一种方法来压缩document.getElementById为null而不必更改代码(例如,放置一个if语句)。有没有什么方法可以做到这一点,所以剩下的其余javascript调用仍然执行null值而不更改每个地方的代码?
我知道我可以进行一些检查(例如if语句等),但我试图避免这种情况。
示例代码:
function example(){
if(document.getElementById('fruits') == 0){ // this will be null
doSomething()
}
var y = 1;
alert(y);
}
在上面,如果x为null,则其余行不会执行。我想找到 一种绕过'的方法null,而不必放置检查,if / else语句等。但是,我使用的遗留代码有很多这些问题。
答案 0 :(得分:1)
由于你没有发布任何代码(如果你发布代码,你几乎总能得到更好的答案),我们可以提供的唯一理论答案是“不”,你不能做你所要求的。如果你有这样的代码:
var obj = document.getElementById("test");
obj.addEventListener("click", function() {
// event handler code here
})
然后,如果你想在test
对象不存在时不生成错误,那么你必须放入if
语句来检查getElementById()
的返回值为了避免下一行的错误。
如果没有更具体的背景(因为你已经包含了NO代码),我必须说你的问题听起来像是一般的编程懒惰。听起来你不想在需要它的代码中添加适当的错误处理,而你正在寻找一种懒惰的方法。
要考虑的其他想法。
您可以在代码块周围使用异常处理程序来捕获异常。因为异常处理程序的执行效果不如if
,所以通常需要使用异常处理程序来处理意外的错误情况,而不是常规的返回路径,但它们当然可以用来捕获缺少DOM元素的问题。
答案 1 :(得分:0)
我不会在生产代码中使用它......
var dummyNode = document.createElement('div');
document.getElementByIdOriginal = document.getElementById;
document.getElementById = function(id) {
var element = document.getElementByIdOriginal(id);
return (element) ? element : dummyNode;
}