如何在创建基本文本编辑器时加粗 javascript 中的选定区域?

How to bold a selected area in javascript while creating a basic text editor?

我正在尝试使用 Rxjs 和 javascript 创建基本的文本编辑器。我在 .html 文件中创建了一个名为 'B' 的按钮,单击该按钮时会从 textarea 中选择文本 bold.How 我是否使用 javascript 为 textarea 中的所选文本设置样式下面的 boldcontent() 函数? 另外,如果选定的文本完全是粗体,那么如何使粗体按钮自动选择?

我知道这是非常基本的疑问,但我是 javascript 的初学者。如果有人能帮助我理解这一点,那就太好了。



let btnbold=document.getElementById('btnbold');
let textarea=document.getElementById('text_area_id');


fromEvent(btnbold,'click').subscribe(()=>boldcontent());

let boldcontent=()=>{
let selection = (textarea.value).substring(textarea.selectionStart,textarea.selectionEnd);


}```

让我们专注于改变文本并将 rxjs 放在一边。在你的 boldcontent 中你有:

let selection = textarea.value.substring(
  textarea.selectionStart,
  textarea.selectionEnd,
);
      

但这只包含选定的文本。你真正想要做的是用两个星号 ** 括起来的选定部分替换你的文本区域中的整个文本(在这里你首选的方法是降价):

  const {value, selectionStart, selectionEnd} = textarea;
  const newValue =
        value.slice(0, selectionStart) + // (1) 
        "**" + 
        value.slice(selectionStart, selectionEnd) + // (2)
        "**" +
        value.slice(selectionEnd, value.length); // (3)
  textarea.value = newValue;

(1) 这将获取所选文本之前的子字符串

(2)这是选中的文字

(3)这是选择后剩下的子串

然而,这是一个非常有限的示例,远未准备好投入生产。正确的实现还将确保每个 ** 都有一个相应的结束标记。部分选中的粗体文本应与新选择等正确合并...要涵盖所有这些边缘情况,您可以在此处创建新问题。