我想使用 window.getSelection 制作一个具有粗体功能的 HTML 文本编辑器

它使整个文本加粗。我只想将选定的文本加粗(绝对没有 exec 命令)


let boldBtn = document.getElementById('Bold-Btn');

let boldClickListener = (event) =>

{

    event.preventDefault();

    let selection = window.getSelection();

    let final = `<span class="text-bold">${selection.focusNode.textContent}</span>`;

    selection.anchorNode.parentElement.innerHTML=final;

    console.log(selection);

};


boldBtn.addEventListener('click',boldClickListener);


慕码人2483693
浏览 113回答 1
1回答

慕慕森

这样做的一种方法可能是执行以下操作:获取窗口选择。将选择转换为字符串以获取文本。创建将是粗体的元素。更换包含在所选文本innerHTML的parentElement用粗体显示的元素。基于您提供的代码的示例:let boldBtn = document.getElementById('Bold-Btn');let boldClickListener = (event) => {&nbsp; event.preventDefault();&nbsp; // Get selection&nbsp; let selection = window.getSelection();&nbsp; // Get string of text from selection&nbsp; let text = selection.toString();&nbsp; // Create bolded element that will replace the selected text&nbsp; let final = `<span class="text-bold">${text}</span>`;&nbsp; // Replace the selected text with the bolded element&nbsp; selection.anchorNode.parentElement.innerHTML = selection.anchorNode.parentElement.innerHTML.replace(text, final);};boldBtn.addEventListener('click', boldClickListener);.text-bold {&nbsp; font-weight: bold;}<div>Test this text</div><button id="Bold-Btn">Bold</button>请注意,您可能希望在创建粗体元素时添加更多逻辑来处理任何现有文本是否已经是粗体。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript