javascript - 如何从 DIV 内的选定文本中去除某些标签?
问题描述
选择以下文本时,我试图从以下文本中删除某些标签:
<div id="removetags">Remove Tags</div>
<div class="thetext">
<p>text text <b>text text</b> text text text</p>
<p>text text text text text <i>text text</i></p>
<p>text <u>text text</u> text text text text</p>
<p>text text <em>text text</em> text text text</p>
</div>
当用户选择部分文本并单击“删除标签”按钮时,我希望它从选定的文本区域中删除以下标签:
$("div#removetags").click(function () {
$("b,i,u,em").replaceWith(function() {
return this.innerHTML;
});
});
例子:
我只想从 *selected 文本中删除标签:
解决方案
我能想到的最简单的解决方案是使用 use并将其与目标文本中所有可能的候选.getSelection()
者进行检查 - 找到后,将其替换为纯..containsNode()
node
textNode
document.querySelector('#removetags').addEventListener('click', function(e) {
let sel = document.getSelection();
let candidates = document.querySelector('.thetext').querySelectorAll('b,i,u,em');
candidates.forEach(function(candidate) {
// If you wish to only remove nodes that are selected entirely, not just partially,
// do .containsNode(candidate, false)
if(sel.containsNode(candidate, true)) {
candidate.replaceWith(document.createTextNode(candidate.innerHTML));
}
});
});
<button id="removetags">Remove Tags</button>
<div class="thetext">
<p>text text <b>text text</b> text text text</p>
<p>text text text text text <i>text text</i></p>
<p>text <u>text text</u> text text text text</p>
<p>text text <em>text text</em> text text text</p>
</div>
推荐阅读
- java - 使用广播接收器在唯一时间发送唯一通知
- c++ - C++ OpenGL wrapper:接口类似固定管线,可以导出.collada
- node.js - 从长时间运行的 aws lambda 函数同步获取响应
- node.js - Windows 上 Electron 中的 dialog.showOpenDialog 有问题吗?
- image - 无法让我的 html 图像以我想要的方式显示和定位
- django - 我在 Django 模型类中定义了常量。如何访问模板中的常量?
- java - 无法解析 com.google.android.gms:play-services-ads:19.1.0
- python - 如何从 cmd.exe 运行 python3
- compression - 存储LZW算法的输出代码
- amazon-web-services - 何时使用 EBS 快照与 AMI 映像