0

我有多个包含表格的 div,其中一个是这样的:

<div id="apple">
    <table width="30%" height="2%" cellpadding="0" border="0px" align="left" >                  
        <tbody>
            <tr>
            <td style="text-align:center"><font face="Arial">&nbsp;</font></td>
            </tr>
        </tbody>
    </table>
</div>

显然它看起来是空的,但在 HTML 中占据了一个段落。所以我应用了 JavaScript 来删除表格。

var ap = document.getElementById("apple")
if(ap.textContent==" " || ap.textContent=="&nbsp;"){
   ap.remove();
}

似乎我没能找到“空”的 div。如何正确找到并删除整个 div?

在这里看小提琴

4

3 回答 3

2

textContent包括所有文本节点,表格中的空白。尝试以下操作:

var ap = document.getElementById("apple");
if (!ap.textContent.trim()) {
    ap.parentNode.removeChild (ap);
}

&nbsp;转换为空格,textContent因此无需对其进行测试。

在http://jsfiddle.net/kQq5b/1/分叉小提琴

于 2013-06-16T06:14:19.497 回答
2

您不能调用.remove()DOM 元素,我认为您div错误地使用了未定义的变量。尝试:

var ap = document.getElementById("apple")
if(ap.textContent==" " || ap.textContent=="&nbsp;") { //change div for ap
   //go to the parent and remove the element
   ap.parentNode.removeChild(ap); 
}

你的小提琴应该看起来像这样

于 2013-06-16T04:00:54.267 回答
0

根据您的小提琴,这是您的问题的解决方案:

<div id="apple">
    <table width="30%" height="2%" cellpadding="0" border="0px" align="left" >                  
        <tbody>
            <tr>
            <td style="text-align:center"><font face="Arial">&nbsp;</font></td>
            </tr>
        </tbody>
    </table>
</div>

和JS:

var ap = document.getElementById("apple")
var content = ap.textContent;
content = content.replace(/&nbsp;/gi, '');
content = content.replace(/\s/g,'');
console.log('Content: "' + content + '"');
if(!content.length){
   ap.parentNode.removeChild(ap);
}

工作示例:http: //jsfiddle.net/orlenko/pvWTP/

于 2013-06-16T04:02:53.733 回答