javascript - 文本区域颜色值

标签 javascript html css textarea

我正在构建文本编辑器,现在我想更改某些特定单词的用户类型的颜色,例如 <html><body> .

CSS:

.html{
    color: rgba(0, 91, 255, 0.52);
}
.body{
    color: rgba(255, 1, 1, 0.59);
}

Javascript

function colorCode() {
    if (document.getElementById('textarea').value == '<html>') {
        document.getElementById('textarea').value == '<html>';
        document.getElementById('textarea').className = 'html';
    }
    if (document.getElementById('textarea').value == '<body>') {
        document.getElementById('textarea').value == '<body>';
        document.getElementById('textarea').className = 'body';
    }
}

HTML:

<textarea class="lined" name="textarea" rows="10" cols="60" id="textarea" onkeyup="outPost(id); colorCode();"></textarea>

现在我的问题是我不能一次创建多个值,因为当我写 <html> 时然后 <body>在 textarea 表单中,颜色只改变一次。 我猜是因为当我输入第一个值 (<html>) 时计算机读取值它工作,但是当我输入第二个值时计算机读取它作为 (<html><body>),有没有另一种方法来修复它?

非常感谢!

最佳答案

按照您的代码读取方式,只有当文本区域内容完全匹配 <html> 时,类名才会更改或 <body> .如果文本区域只需要包含这些值以触发颜色更改,那么您似乎可能需要子字符串匹配。所以你可以这样重写:

function colorCode() {
    var textArea = document.getElementById('textarea');

    if (textArea.value.search('<html>') > -1) {
        textArea.className = 'html';
    }
    if (textArea.value.search('<body>') > -1) {
        textArea.className = 'body';
    }
}

注意我还将测试区域节点存储到textArea这样您就不必每次都像以前那样在 DOM 中搜索该节点。

关于javascript - 文本区域颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044390/

相关文章:

css - 如何使元素相对于标题居中?

html - 悬停 visibility 不起作用

JavaScript 在添加到选择表单时不断抛出 "Uncaught TypeError"

css - :active css selector not working for IE8 and IE9

html - IE11和IE8相差1个像素

CSS: Left/Right/Center Example,请解释为什么会这样

javascript - 禁用特定容器及其子容器的上下文菜单

javascript - 当值更改时更新与 &lt;input&gt; 元素关联的 DB 值

javascript - 检索 Google Doc 中的 ListItem 索引

javascript - 如何将 JQuery UI 的可拖动和可排序与 div 元素混合在一起?