JavaScript document.execCommand删除formatBlock格式?

时间:2012-05-30 06:21:07

标签: javascript html html5 formatting contenteditable

如果我在这样的页面上格式化一段文字:

document.execCommand('formatBlock', false, 'h1');

如何删除此格式?

6 个答案:

答案 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”。