document.getElementById在null时禁止

时间:2014-10-17 18:25:16

标签: javascript html null

我试图找到一种方法来压缩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语句等。但是,我使用的遗留代码有很多这些问题。

2 个答案:

答案 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;
}