【发布时间】:2024-01-21 13:32:01
【问题描述】:
我正在尝试使用 textarea 调用 keyup 上的函数和 div 来输出结果(突出显示/彩色文本)来构建一个简单的颜色荧光笔。
要突出显示的单词及其相关颜色存储在此对象中:
var obj = {
"to": "green",
"code": "red",
"applet": "blue"
}
然后将输入字符串拆分为单词单元以检查它们是否与 obj 键匹配。
var splitRequest = input.value.toLowerCase().split(' ');
如果有,则应突出显示。我写了一个简单的代码来解决这个问题(见最后的小提琴),除了这一行:
output.innerHTML += '<span style="color:' + obj[splitRequest[i]] + '">' + splitRequest[i] + " </span>";
由于+= 符号,它会在每次按键时打印整个文本,而不是用新内容替换当前内容。问题是我不能简单地使用= 符号,因为它只会打印splitRequest 数组的第一个元素而不是整个数组。我尝试使用join() 方法,但它显然没有像我预期的那样工作(test)。
也许代码本身不是很好,我应该使用另一种方法来让它工作。这将是更好地学习 javascript 的好方法,但我实际上不知道如何做到这一点。
如何在突出匹配单词的同时输出用户输入的文本而不会出现此问题?
这是我遇到的工作演示:https://jsfiddle.net/Lau1989/9oL7umtt/1/
感谢您的帮助
PS:我知道有第三方可用于语法高亮显示,但为了自学,我尝试使用纯 javascript(无 jQuery)从头开始编写代码。
【问题讨论】:
-
<font>标记已成为 deprecated in HTML 4.01。你不应该再使用它了。将其替换为:<span style="color:...">...</span>