在没有任何html标签的html中隐藏文本

IT技术 javascript html css
2021-01-29 01:15:42

我在下面有 HTML 代码,并且文本周围没有任何 HTML。有什么方法可以隐藏“p”标签之后的文本“Enter”

<div class="entry">
<p class="page-header" style="text-align: center;"><strong>Enter</strong></p>
<p>&nbsp;</p>
Enter <-- i want to hide this text
<div class="subhead"></div>
</div>

不可能用 div 或任何其他标签包装它,所以我需要一些不同的决定,比如 JavaScript 或一些 CSS?

3个回答

我会考虑使用字体大小的 CSS hack:

.entry {
  font-size:0;
}
.entry * {
  font-size:initial;
}
<div class="entry">
<p class="page-header" style="text-align: center;"><strong>Enter</strong></p>
<p>&nbsp; somethin here</p>
Enter (this will be hidden !!)
<div class="subhead">another text here</div>
</div>

另一个想法visibility

.entry {
  visibility:hidden;
}
.entry * {
  visibility:visible;
}
<div class="entry">
<p class="page-header" style="text-align: center;"><strong>Enter</strong></p>
<p>&nbsp; somethin here</p>
Enter (this will be hidden !!)
<div class="subhead">another text here</div>
</div>

请注意,屏幕阅读器仍会读出两个 Enter
2021-03-25 01:15:42

抱歉回复晚了,但这就是您可以使用jquery. 只需获取 div 的所有内容,过滤掉周围没有标签的内容,并span使用 style 属性将它们包裹在里面display:none这将为您隐藏该文本。

$(".entry")
    .contents()
    .filter(function () {
    return this.nodeType === 3 && this.nodeValue.trim() !== "";
}).wrap("<span style='display:none' ></span>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="entry">
<p class="page-header" style="text-align: center;"><strong>Enter</strong></p>
<p>&nbsp;</p>
Enter <!-- i want to hide this text-->
<div class="subhead"></div>
</div>

谢谢

你认为它会起作用吗

var ele =document.getElementsByClassName('entry')[0]
ele.removeChild(ele.lastChild)
它将删除最后一个元素
2021-04-10 01:15:42