2015-03-18 88 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