在可编辑元素中动态插入跨度

Dynamic span insertion in an editable element

提问人:Miodek 提问时间:11/10/2023 更新时间:11/10/2023 访问量:56

问:

我正在尝试用打字稿制作一个简单的语法荧光笔。有没有办法将 css 插入到具有给定索引的文本中?

假设我有一个文本区域,我希望 0 到 10 的文本颜色变为红色。 这甚至可能吗?

JavaScript HTML CSS

评论

1赞 K Scandrett 11/10/2023
应该注意的是,文本区域中不能有多种颜色。但是,一个好的替代方案可能是 stackoverflow.com/a/40898337/1544886

答:

1赞 Łukasz D. Mastalerz 11/10/2023 #1
const textarea = document.getElementById('yourTextareaId') as HTMLTextAreaElement;

function applyHighlight(start: number, end: number, color: string) {
    const before = textarea.value.substring(0, start);
    const highlighted = `<span style="color: ${color}">${textarea.value.substring(start, end)}</span>`;
    const after = textarea.value.substring(end);
    
    textarea.innerHTML = before + highlighted + after;
}

// forExsmple
applyHighlight(0, 10, 'red');

评论

1赞 Community 11/10/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。