簡體   English   中英

document.getElementById抑制為null

[英]document.getElementById suppress when null

我試圖找到一種方法來抑制document.getElementById為null時無需更改代碼(例如,放置if語句)。 有什么辦法可以做到,以便在執行null值后仍執行其余的javascript其余調用,而無需更改發生此錯誤的每個位置的代碼?

我知道我可以進行一些檢查(例如if語句等),但是我試圖避免這種情況。

示例代碼:

  function example(){
         if(document.getElementById('fruits') == 0){ // this will be null
           doSomething() 
      } 
         var y = 1;
         alert(y);

     }

在上面,如果x為null,則其余行將不執行。 我試圖找到一種無需旁路檢查,if / else語句等就可以“繞過” null的方法。但是,我使用的遺留代碼存在許多此類問題。

由於您尚未發布任何代碼(如果發布代碼,您幾乎總會得到更好的答案),因此我們只能提供“不”的理論答案,您無法執行所要求的操作。 如果您有這樣的代碼:

var obj = document.getElementById("test");
obj.addEventListener("click", function() {
    // event handler code here
})

然后,如果要使該對象在不存在test對象時不產生錯誤,則必須放入if語句以檢查getElementById()的返回值,以避免下一行出現錯誤。


沒有更具體的上下文(因為您未包含任何代碼),我必須說您的問題聽起來像是一般的編程懶惰。 聽起來您不想在需要它的代碼中添加適當的錯誤處理,而您正在尋找一種懶惰的出路。


其他需要考慮的想法。

您可以在代碼塊周圍使用異常處理程序來捕獲異常。 由於異常處理程序不執行,以及if statments,您通常需要使用異常處理程序意外的錯誤條件,而不是常規的返回路徑,但他們絕對可以用來捕捉失蹤DOM元素的問題。

我不會在生產代碼中使用它...

var dummyNode = document.createElement('div');
document.getElementByIdOriginal = document.getElementById;
document.getElementById = function(id) {
    var element = document.getElementByIdOriginal(id);
    return (element) ? element : dummyNode;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM