我有一组段落元素。其中一些为空,一些仅包含空格,而另一些则包含内容:
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
我正在使用 getElementsByTagName
来选择它们:
var paragraphs = document.getElementsByTagName('p');
这将返回文档中的所有段落。我想要删除它们,因此我希望运行:for (var i = 0, len = paragraphs.length; i < len; i++) {
paragraphs[i].remove();
}
但是我会收到Uncaught TypeError: Cannot read property 'remove' of undefined
的错误。我认为这很奇怪,但我想试着添加一个保护条件,看看会发生什么:
for (var i = 0, len = paragraphs.length; i < len; i++) {
paragraphs[i] && paragraphs[i].remove();
}
没有错误,但并非所有元素都被删除。所以我再次运行它,它会移除一些之前未被移除的元素。我再次运行它,最终所有段落都从文档中删除了。
我想知道我错过了什么明显的细节。
if (!e.hasChildNodes() || (!e.innerHTML.indexOf(" ")>0))...
演示:http://jsfiddle.net/abhitalks/a2Hbn/ - Abhitalksfor (var i = paragraphs.length - 1; i >= 0; i--)
。 - arichards