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

标签 javascript html jquery css contenteditable

问题

嗨,我有一些代码,当单击按钮时,contentEditable <p> 中的所有内容都会显示出来。标签的字体粗细为 600(粗体)。

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

图像示例

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

链接到包含代码的 fiddle :https://jsfiddle.net/AidanYoung/9tg4oas5/

最佳答案

这是您的解决方案。

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

关于javascript - 仅将样式应用于可编辑内容中的选定文本 <p>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70366481/

相关文章:

javascript - HTML 使图像充当按钮而无需提交的正确方法

javascript - jQuery 中的图像替换

javascript - 如何根据 Express 参数检索 Mongoose 模型

javascript - 当通过 2 个组件传递 props 时,我失去了在数组上使用 .map 的能力

javascript - 如何等待 MongoDB 连接建立后再使用数据库

javascript - 将鼠标悬停在另一个跨度上时更改跨度背景

javascript - Canvas - 图像不透明度循环(淡入)

Javascript Array map "appears"对缺失元素执行回调

jquery - 有没有办法在 jquery ui slider 中显示 "ticks"或 "steps"的数量?

php - jQuery .load 不加载 swfobject 内容