我正在尝试编写代码编辑器,我的问题是,例如,如果用户编写了以下代码,我想给内容可编辑div上的特定单词上色:
function print(){}; function load(){};
“功能”一词应涂成红色。
这是我尝试过的方法,很遗憾,它不起作用,但我想展示自己的努力以及我要实现的目标。
let editor = document.getElementById("editor");
editor.oninput = () => {
editor.innerHTML = colorWord(editor.innerHTML,"function");
caretatEnd(editor);
}
function colorWord(text,word) {
while (text.includes(word)) {
text = text.replace(word,"<span style='color:blue;'>" + word + "</span>");
}
return text;
}
function caretatEnd(element) {
element.focus();
if (typeof window.getSelection != "undefined" &&
typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(element);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createtextrange != "undefined") {
var textrange = document.body.createtextrange();
textrange.moveToElementText(element);
textrange.collapse(false);
textrange.select();
}
}