请不要误会我的意思,我知道我可以在段落中添加一个带有类的span标签,然后更改它的颜色。但这不是我需要的。
我的应用程序在浏览器中显示一些日志文件。我正在用p标签中的AJAX加载数据(来自我的日志文件)。现在我想改变包含" ERROR"的行的颜色。变红了。但我需要其他线条是黑色的。因此,如果我写入span标记,则所有错误都位于p标记之上。那也不是我想要的。
例如:我有一个信息日志,一个错误日志,还有一个信息日志。 我的线条应该有颜色:黑色,红色,黑色
有谁知道我该怎么办?
感谢您的帮助
答案 0 :(得分:1)
你已经说过&#34; line&#34;所以我假设数据是用换行符分隔的,比如<br>
。要在段落中添加这些行,您必须将它们转换为<
,并且为了避免在条目文本中误解&
和// The data
var text =
"INFO: Blah blah blah\n" +
"ERROR: OMG, something went wrong\n" +
"WARNING: Don't run with scissors\n" +
"ERROR: Knife inserted in electrical socket.\n" +
"INFO: More blah";
// First, encode entities
text = text.replace(/&/g, "&").replace(/</g, "<");
// Split into lines
var lines = text.split("\n");
// Wrap errors in error span
lines = lines.map(function(line) {
return line.startsWith("ERROR:") ? "<span class=error>" + line + "</span>" : line;
});
// Combine with <br> and put in the paragraph
document.getElementById("target").innerHTML = lines.join("<br>");
,您需要&#39 ; ll需要将它们变成字符实体。所以我们也可以在空间中包装错误行,请参阅注释:
.error {
color: #d00;
}
&#13;
<p id="target"></p>
&#13;
document.getElementById("target").innerHTML =
text.replace(/&/g, "&").replace(/</g, "<")
.split("\n")
.map(function(line) {
return line.startsWith("ERROR:") ? "<span class=error>" + line + "</span>" : line;
})
.join("<br>");
&#13;
为了清楚起见,这很冗长。简短版本:
var text =
"INFO: Blah blah blah\n" +
"ERROR: OMG, something went wrong\n" +
"WARNING: Don't run with scissors\n" +
"ERROR: Knife inserted in electrical socket.\n" +
"INFO: More blah";
document.getElementById("target").innerHTML =
text.replace(/&/g, "&").replace(/</g, "<")
.split("\n")
.map(function(line) {
return line.startsWith("ERROR:") ? "<span class=error>" + line + "</span>" : line;
})
.join("<br>");
.error {
color: #d00;
}
&#13;
<p id="target"></p>
&#13;
saveItem.setOnAction((ActionEvent event) -> {
// the content of scrollPane is saved as a JPEG file.
WritableImage img = scrollPane.snapshot(new SnapshotParameters(), null);
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
// File fileToSave = chooser.getSelectedFile();//Remove this line.
BufferedImage img2 = SwingFXUtils.fromFXImage(img, null);
int result = chooser.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
try {
File fileToSave = chooser.getSelectedFile();
ImageIO.write(img2, "png", fileToSave);
} catch (IOException ex) {
Logger.getLogger(GuiClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
&#13;
答案 1 :(得分:-1)
我很抱歉,但没有直接的方法可以做到这一点,因为打开和关闭HTML标记中的所有文本都被视为文本节点(作为一个整体),并且没有CSS选择器可以执行您尝试的操作完成。我唯一的建议是使用JavaScript来解析收到的文本(可能在“完成”ajax事件中),以动态地添加上述标签及其相应的CSS类。