javascript - 以编程方式附加内容而不丢失 html 标签

标签 javascript jquery html

我对下面的脚本有一些问题:

<article>
  Si potrebbe comunemente pensare che i passaporti americani e britannici siano più potenti, da un punto di vista turistico, rispetto a quelli degli altri Paesi del mondo. Nel senso che permettano più accessi senza bisogno di visto. In realtà non è vero, e lhanno scoperto quelli della ditta britannica Henley & Partners sui visti Partners Index, utilizzando i dati del International Air Transport Association (IATA).
 <br>
 <br> Sono i tedeschi, in base a questi dati, ad avere i passaporti più forti, che danno loro l'accesso senza visto a 177 Paesi. L'indice classifica 199 Paesi in base alla libertà di viaggio che ognuno di questi offre ai suoi cittadini su un massimo di 218.</article>

Javascript

var know = "che;più";

function CheckKnowWords() {
  if (know != null) {
    know = know.split(";");
    var words = $("article").text().split(" ");
    $("article").empty();
    $.each(words, function(i, v) {

      if (know.indexOf(v) > -1) {
        IKnow = "true";
      } else {
        IKnow = "false";
      }

      if (IKnow == "true") {
        $("article").append(" ");
        $("article").append(v + " ");
      } else {
        $("article").append(" ");
        $("article").append($("<span style='border-radius: 4px;border: 1px solid #ffcccc; background: #ffcccc;'>").text(v));
      }
    });
  } else {
    var words = $("article").text().split(" ");
    $("article").empty();
    $.each(words, function(i, v) {
      $("article").append(" ");
      $("article").append($("<span style='border-radius: 4px;border: 1px solid #ffcccc; background: #ffcccc;'>").text(v));
    });
  }
}

这里有一个jsfiddle链接:https://jsfiddle.net/fabiobraglin/ww7uLvd1/1/

这个脚本可以很好地识别单词,但我丢失了 HTML 标签,<br><b>例如...我怎样才能做同样的事情,但不改变文本内的 HTML 标签?

最佳答案

只需将 .text 更改为 .html 就可以了:

var know = "che;più";

function CheckKnowWords() {
  if (know != null) {
    know = know.split(";");
    var words = $("article").html().split(" ");
    $("article").empty();
    $.each(words, function(i, v) {
      for (var j = 0; j < know.length; j++) {
        if (know[j].match(v)) {
          IKnow = "true";
        } else {
          IKnow = "false";
        }
      }
      if (IKnow == "true") {
        $("article").append(" ");
        $("article").append(v + " ");
      } else {
        $("article").append(" ");
        $("article").append($("<span style='border-radius: 4px;border: 1px solid #ffcccc; background: #ffcccc;'>").html(v));
      }
    });
  } else {
    var words = $("article").html().split(" ");
    $("article").empty();
    $.each(words, function(i, v) {
      $("article").append(" ");
      $("article").append($("<span style='border-radius: 4px;border: 1px solid #ffcccc; background: #ffcccc;'>").html(v));
    });
  }
}

关于javascript - 以编程方式附加内容而不丢失 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963559/

相关文章:

javascript - 用另一个对象更新对象数组中的对象

javascript - 如何将 HTML 表格导出到 Chrome 和 IE 支持的 Excel?

javascript - 如何设置 <alt> 标签字符串的样式?

html - 为什么正确打印网页如此困难?

php - 为什么我不断收到 php 错误,在 FOR 语句中说 unexpected ')'?

javascript - AngularJS ng-model 不工作?

javascript - 自动完成不会检测源对象的更改

javascript - 检测网页中鼠标光标类型的变化

javascript - 如何通过表中的 id 获取图片并将其从一个 td 移动到另一个 td?

javascript - 按下按钮时如何隐藏/显示内容?