2016-03-16 254 views
5

我正在使用这样的CodeMirror来向用户显示一些XML响应。CodeMirror markText无法正常工作

HTML代码

<body> 
    <textarea id="cm" >#{bean.xmlResponse}</textarea> 
</body> 

JS代码

window.onload = function() {    
    var editor = CodeMirror.fromTextArea(document.getElementById('cm'), { 
        mode: "xml", 
        theme: "default" 
       }); 

    editor.getDoc().markText({line:5,ch:2},{line:5,ch:9},"color : red"); 
}; 

现在,当我试图强调通过使用markText这是不工作的一些特定的行。当然“xml”模式正在工作,但第5行不会用红色突出显示。

我真的很感谢你的帮助。已经过去了3天,试图完成它。谢谢。

回答

6

你需要指定的选项参数作为一个地图,而不是一个字符串:{css: "color : red"}

详情请参见文档:https://codemirror.net/doc/manual.html#markText

下面是基于您的示例代码,可正显示出它的工作,你描述(你可以忽略了不必要的CSS/JS设置,例如XML需要有段运行):

var editor = CodeMirror.fromTextArea(document.getElementById('cm'), { 
 
    mode: "xml", 
 
    theme: "default" 
 
}); 
 

 
editor.getDoc().markText({ 
 
    line: 5, 
 
    ch: 10 
 
}, { 
 
    line: 5, 
 
    ch: 39 
 
}, { 
 
    css: "color : red" 
 
});
@import "https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.12.0/codemirror.css"
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.12.0/codemirror.js"></script> 
 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.12.0/mode/xml/xml.js"></script> 
 
<textarea id="cm"> 
 
    <note> 
 
    <to>Tove</to> 
 
    <from>Jani</from> 
 
    <heading>Reminder</heading> 
 

 
    <body>Don't forget me this weekend!</body> 
 
    </note> 
 
</textarea>

+0

太棒了!它正在工作。非常感谢兄弟。 – Gans

+0

你挑战我的周末( - :谢谢! – jonathana