JavaScript删除一些标签之间的所有内容
JavaScript remove all content between some tags
我想只使用JavaScript删除两个标签之间的所有内容(没有jQuery或类似的东西)。我也不能修改我想删除的内容。
例如:
<body>
<p>Remove me</p>
<a href="#">Me too</p>
<img src="But don't me!"/>
(...)
我想删除<body>
和<img/>
之间的所有内容
你可以这样写:
var children = document.body.childNodes;
for(var i = 0; i < children.length; i++)
{
if(children[i].tagName == 'IMG')
break;
document.body.removeChild(children[i]);
}
试一下,它应该工作,但这是一个严格的例子,你在示例代码中有完全相同的结构。通常,您会获得想要删除的内容的父元素。然后一个接一个地删除标签,直到你遇到你不想删除的标签。这可以工作,但我不推荐它-将内容包装在一个div或类似的东西,并删除这一个标签。为您和其他可能需要查看代码的人简化了很多事情。
基于前提:
我想删除两个标签之间的所有内容仅使用JavaScript(没有jQuery或类似的东西)。
和上面的注释:
假设我不能修改内容
如果你不能给元素添加id或将它们包装在某个容器中,我可以看到两个解决方案。
- 使用getElementByTagName()来定位img-tag,然后删除它之前的所有子节点。
- 使用document.removeChild()并使用固定子节点索引(如果项的索引是固定的)
这两种解决方案都严重依赖于将来不会更改的DOM。我强烈建议使用jQuery或其他框架使事情变得更容易(并且跨浏览器兼容)。
由于不能修改HTML或使用库,因此可以尝试使用getElementsByTagName来检索节点
- getElementsByTagName (p) [0]
- getElementsByTagName("a")[0]
然后这取决于你是否希望他们的标签仍然在那里,但没有内容,或者如果你希望标签也被删除。如果您希望删除内容,但出于某种原因保留空节点,请尝试设置
- var aNode = document.getElementsByTagName('a')[0];
- aNode.innerHtml = " ";
如果要删除完整的节点,请按照前面提到的操作:
- var pNode = document.getElementsByTagName('p')[0];
- pNode.parentNode.removeChild (pNode);
当然,您必须注意DOM将来不会更改,因为这可能会破坏解决方案。
相关文章:
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- 删除图形和数字之间的连字符(-)符号
- 使用 JavaScript 删除标签之间的每个空格
- 在某些情况下,“text”方法会删除单词之间的空格
- 删除两个字符串正则表达式之间的所有内容
- 删除 p标签之间
- 使用正则表达式删除标记时,Firefox和Chrome之间存在不一致
- 如何删除两个单词之间的字符串
- 删除Javascript中特定字符之间的所有内容
- javascript:如何使用regex删除两个特殊字符之间的逗号(,)
- 删除两点之间的所有HTML
- 我在angular JS中选择了一个默认选项,并删除了两个单词之间的下划线
- 删除页眉和导航之间的间距
- 基本的highcharts插件,需要删除点之间的线
- jQuery - 删除表格行(如果任何单元格包含介于 X 和 Y 之间的值)
- 如何删除句点和前一个单词之间的空格
- 删除带有单词javascript的大括号之间的空格
- 什么是用于删除大写字母之间的空格的正则表达式,但在单词之间保留空格
- 如何使用 javascript 删除字符串之间的标记
- 删除行之间的空格