如果我在这样的页面上格式化一段文字:
document.execCommand('formatBlock', false, 'h1');
如何删除此格式?
答案 0 :(得分:13)
我想 document.execCommand('removeFormat',false,false)
会这样做吗?
在document.execCommand('formatBlock', false, 'div')
- 块上发布<h1>
将移除<h1>
- 代码并将其替换为<div>
- 代码 1 。那可行吗?
1 如果您没有使用IE
答案 1 :(得分:1)
我使用以下命令清除了h1的影响:
document.execCommand('formatBlock', false, 'p');
您已将其格式更改为h1,因此我们可以用相同的方式将其更改为普通段落格式。
如果将每个段落放在
document.execCommand('formatBlock', false, 'div');
将格式设置为与其他块相同。
答案 2 :(得分:1)
要将h1替换为其文本内容节点,然后使用下面的代码。 对于完整的代码,您需要添加一些检查以确保删除了所需的内容。
const button = document.getElementsByTagName('button')[0]
button.addEventListener('click', event => {
const selection = window.getSelection()
if (!selection.isCollapsed) {
selection.anchorNode.parentNode.replaceWith(selection.anchorNode)
}
})
<div contenteditable="true">
<p>Some text</p>
<h1>Select me then click the button</h1>
<p>Some text</p>
</div>
<button>Click to remove H1</button>
答案 3 :(得分:0)
您可能必须找到父标记,然后使用innerHTML获取文本,并使用innerHTML替换父标记和结束标记之间的原始数据。但是,这将删除所有格式。
答案 4 :(得分:0)
我遇到了同样的问题,需要删除包裹我的文本的h1标签。
我所做的就是获取所选文本的父节点:
var elem_parent_node = window.getSelection()。getRangeAt(0).startContainer.parentNode;
然后检查它的nodeName是否为“ H1”;如果是,则将所选文本存储在selected_text变量中,然后删除节点本身:
elem_parent_node.remove();
然后
document.execCommand('insertText',false,select_text);
答案 5 :(得分:0)
似乎无法“撤消” formatBlock。只要它是另一个块级HTML标记,就可以始终用其他“ formatBlock”替换一个“ formatBlock”。