更改p标签中单行的颜色,然后将其更改回来

时间:2017-04-13 06:59:04

标签: javascript html css ajax logging

请不要误会我的意思,我知道我可以在段落中添加一个带有类的span标签,然后更改它的颜色。但这不是我需要的。

我的应用程序在浏览器中显示一些日志文件。我正在用p标签中的AJAX加载数据(来自我的日志文件)。现在我想改变包含" ERROR"的行的颜色。变红了。但我需要其他线条是黑色的。因此,如果我写入span标记,则所有错误都位于p标记之上。那也不是我想要的。

例如:我有一个信息日志,一个错误日志,还有一个信息日志。 我的线条应该有颜色:黑色,红色,黑色

有谁知道我该怎么办?

感谢您的帮助

2 个答案:

答案 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, "&amp;").replace(/</g, "&lt;"); // 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需要将它们变成字符实体。所以我们也可以在空间中包装错误行,请参阅注释:

&#13;
&#13;
.error {
  color: #d00;
}
&#13;
<p id="target"></p>
&#13;
document.getElementById("target").innerHTML =
  text.replace(/&/g, "&amp;").replace(/</g, "&lt;")
  .split("\n")
  .map(function(line) {
    return line.startsWith("ERROR:") ? "<span class=error>" + line + "</span>" : line;
  })
  .join("<br>");
&#13;
&#13;
&#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, "&amp;").replace(/</g, "&lt;")
  .split("\n")
  .map(function(line) {
    return line.startsWith("ERROR:") ? "<span class=error>" + line + "</span>" : line;
  })
  .join("<br>");

&#13;
&#13;
.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;
&#13;
&#13;

答案 1 :(得分:-1)

我很抱歉,但没有直接的方法可以做到这一点,因为打开和关闭HTML标记中的所有文本都被视为文本节点(作为一个整体),并且没有CSS选择器可以执行您尝试的操作完成。我唯一的建议是使用JavaScript来解析收到的文本(可能在“完成”ajax事件中),以动态地添加上述标签及其相应的CSS类。