2013-03-01 111 views
2

我正在做brainfuck解释(brainfuck是由8个符号的一种编程语言,这些都是,.+-<>[]HTML:更改textarea中单个字符的背景颜色?

有没有办法上色单个字符的通过JavaScript一个HTML文本区域的背景是什么?

假设我的文本区域包含“hello world”。我希望能够告诉它为第三个字母上色,所以它会显示“他* l *世界”(在这里使用粗体来说明颜色,因为我不知道如何在堆栈中包含颜色溢出编辑器)。

有谁知道如何做到这一点,或者如果有可能呢? 任何帮助,将不胜感激:=)

+1

不,这是不可能的。你必须以不同的方式来做,例如通过使用contenteditable div并将每个字符包裹在“span”中。您正在寻找像CodeMirror:http://codemirror.net/。我不确定他们是如何做的,但它看起来不错。 – 2013-03-01 11:12:32

+0

您需要为textareas编写自己的wysiwyg类型编辑器,然后才能够使用正则表达式或其他东西来包装跨度中的指定字符,并为它们设置一个类来为它们着色 – Pete 2013-03-01 11:15:55

+0

因此,字符本身会着色。我想着色个别角色的背景,但这可能是相同的过程? – mort 2013-03-01 11:31:17

回答

0

虽然这似乎是不可能做到这一点,但我能想到的一招是使用多个跨度为每一个字符,并给他们一个背景颜色,按您的选择。

使用JavaScript,您可以使用子选择器访问任何字符。

+0

介意阐述?我不是一个HTML专家:b – mort 2013-03-01 11:24:49

3

我觉得穆库尔栽在我头上的种子,但将这样的事情是有用的:

<textarea id="editor"></textarea> 
<div id="render"> </div> 

<script> 

$(document).ready(function() { 
    $("#editor").keyup(function() { 
    var plaincontent = $("#editor").val(); 
    var richcontent = ""; 

    for (var i=0; i<plaincontent.length; i++) { 
    if (plaincontent.charAt(i) == "[") { 
     richcontent = richcontent + "<span style='color:#f00'>[</span>"; 
    } else { 
     richcontent = richcontent + plaincontent.charAt(i); 
    } 
    } 
    $("#render").html(richcontent); 
}); 
}); 

</script> 

基本上,它需要你在textarea的输入,并吐出它在下面的股利,而是把它包装取决于你输入哪个字符。在上面的演示中,[字符将显示为红色。

你必须调整它的所有不同的法律字符。

+0

这很整洁,但我想要的不是给一种类型的charscter着色。我需要能够告诉文本框颜色,例如第5个字符。所以只有一个角色,而不依赖于角色是什么。你认为可以调整你的代码来做到这一点吗? – mort 2013-03-01 18:21:20

+0

前段时间应该可能已经说明了这一点,但我所做的只是简单地显示在逐步执行程序时正在读取的字符,作为调试帮助:b非常感谢您的帮助。我会试着看看我是否能够正常工作。如果我确实得到它的工作,我会确保信誉:) – mort 2013-03-01 18:34:40

+0

哇,这听起来像一个伟大的项目!我可以看到你如何修改代码来使其工作,但无论哪种方式,它都将是一个很棒的JQuery学习体验:)非常感谢潜在的功劳,祝你好运! – 2013-03-01 18:40:33