仅将样式应用于内容可编辑中的选定文本 <p>

Only apply styling to selected text in content editable <p>

问题

你好,我有一些代码,当点击一个按钮时,contentEditable <p> 标签中的所有内容的字体粗细都是 600(粗体)。

我想知道如何在按下按钮时做到这一点,而不是将 p 标签中的所有内容设置为 600 字体粗细,而只设置所选文本的样式。例如,如果您只突出显示 p 标签的前两个单词并按下按钮,则只有前两个单词的字体粗细会发生变化。

图片示例

在示例中,当按下按钮时,只有前两个单词的字体粗细会发生变化。

Link 到 fiddle 包含代码:https://jsfiddle.net/AidanYoung/9tg4oas5/

您可以使用跨度标签并添加 ID

function changeBold() {
    document.getElementById("strongC").style.fontWeight = "600";
}
<p contenteditable="true" id="contenttxt">
    <span id="strongC">Some text</span>
    in this paragraph tag
</p>
<button onclick="changeBold()">Bold selected text</button>

这是您的解决方案。

function changeBold() {
    const   text = window.getSelection().toString();
    var btn = document.createElement('span');
    btn.innerHTML = text;
    btn.style.fontWeight = 'bold';
    document.execCommand('insertHTML', false, btn.outerHTML);
    
}
    <p contenteditable="true" id="contenttxt">
      Some text in this paragraph tag
    </p>
    <button onclick="changeBold()">Bold selected text</button>