2016-01-06 136 views
0

我在一些測試頁中使用此命令DOM:繼續執行DOM命令

document.querySelector('div#summary-item div.description').innerHTML || "" 

但在一些網頁時,第一部分不存在,我沒有收到第二「」但我收到此錯誤我PROGRAMM停止

Uncaught TypeError: Cannot read property 'innerHTML' of null(…) 

有沒有什麼簡單的方法來獲得「」,而不需要使用typeof在if語句?

回答

1

您不需要typeof但您確實需要一個if語句或其他一些流控制。

var el = document.querySelector('div#summary-item div.description'); 
var data = ""; 
if (el) 
    data = el.innerHTML; 

或者這裏使用條件運算符:

var el = document.querySelector('div#summary-item div.description'); 
var data = el ? el.innerHTML : ""; 

從技術上講,你可以逃脫不使用流控制語句或表達使用具有.innerHTML屬性的對象。

var data = (document.querySelector('div#summary-item div.description') || {innerHTML:""}).innerHTML; 

但我認爲這是醜陋的。語句是if語言的一部分。不知道爲什麼你想避免它。


當然,如果它真的困擾你,你總是可以使用一個將它抽象出來的函數。

function htmlFromElem(selector) { 
    var el = document.querySelector(selector); 
    return el ? el.innerHTML : ""; 
} 

然後使用它是這樣的:

var data = htmlFromElem('div#summary-item div.description')