【发布时间】:2013-09-07 12:16:25
【问题描述】:
我正在尝试一些东西,真的只是为了一点乐趣,当代码输入网页上的文本区域时,我试图模拟语法突出显示。
我写了一个小 JS 脚本,但是它抛出了错误。 “无法设置未定义的属性‘颜色’。”
为此,我创建了一个包含一些示例“流行语”的小数组来搜索输入的代码。然后我将代码字符串拆分为一个数组并循环查找两者之间的匹配项。 我对拆分方法或搜索方法不太熟悉。我怎样才能得到任何发现在屏幕上实时改变颜色的匹配项?
function init() {
window.setInterval(function() {
var code = document.getElementById("texty").value;
var buzzword = ["function","()","{","}","[","]",".getElementById",".getElementsByClassName",".style","$"];
for(i=0; i < buzzword.length; i++)
{
var testers = code.split(" ");
for(i =0; i < testers.length; i++)
{
if(buzzword[i] == testers[i])
{
code.search(testers[i]);
code.match(testers[i]).style.color = 'blue';
}
}
}
}, 10000);
}
函数 init() 在 textarea 的焦点上执行。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
任意字符串没有样式,它们不是 DOM 的一部分,它们只是数据。您不能将样式应用于文本区域值的随机子字符串。代码
code.match(testers[i]).style.color = 'blue';永远不会起作用。 -
继续@meagar 所说的,这就是为什么在格式化用户输入的网站上,通常有一个文本区域供您输入,然后另一个区域供您查看格式化输入的预览,例如stackoverflow 回答 textarea 和预览。
-
这是一个很好的观点。关于将捕获文本区域中的某些单词并在单独的“预览”div 中将它们涂成蓝色的代码的任何想法?
-
@tinkerbot,我已经修改了我之前的错误答案以允许您这样做。
标签: javascript arrays search syntax