2015-03-18 80 views
0

我想知道如何隱藏在JavaScript中的DOM元素,如果它不包含任何文本,例如:如何隱藏不包含文本的DOM元素?

<ul> 
    <li>Text</li> 
    <li>Text</li> 
    <li>Text</li> 
    <li>Text</li> 
    <li>Text</li> 
    <li>Text</li> 
    <li></li> <!-- Element to hide --> 
</ul> 

我目前寫:

var point = document.getElementsByTagName("li"); 
for(var i = 0; i < point.length; i++){ 
    if(point[i].text==""){ 
     point[i].style.display = "none"; 
    } 
} 

謝謝!

+0

取代'點[I] .text',使用'點[I] .innerHTML '。 – 2015-03-18 22:42:14

+0

'document.querySelectorAll(「li:empty」)''讓你不必循環和比較 – dandavis 2015-03-18 22:47:42

+1

或更好,甚至不使用JS,使用CSS:'li:empty {display:none;}' – dandavis 2015-03-18 22:49:20

回答

0

使用innerHTML屬性並在進行檢查之前先刪除空白空間。

if(!/[\S]/.test(point[i].innerHTML)) { 
    point[i].style.display = "none"; 
} 
+0

'innerText'是非標準的,你想'textContent' – elclanrs 2015-03-18 22:43:52

+0

@elclanrs我的壞..修正它。 – 2015-03-18 22:47:20

+0

謝謝!我使用以前的解決方案,它的工作原理! – Numb3rs 2015-03-18 23:00:49

1

你爲什麼不使用jQuery這一點,它會順利進行,瀏覽器的差異:

$('li').each(function(){ 
    if($(this).html()==="") { 
     $(this).css({"display":"none"}); 
    } 
}); 
+1

對不起,但我只使用JavaScript。但是當我學習jQuery時,我會相信它。 – Numb3rs 2015-03-18 22:56:50

+0

好吧,我會強烈推薦使用jQuery,它使生活更輕鬆,語法也不像看起來那樣可怕:) – Michelangelo 2015-03-18 23:00:10