Функция Highlight / Mark, основанная на следующем коде - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь создать простую функцию выделения, используя Javascript и jQuery, однако у меня есть две проблемы, которые я могу обойти в данный момент.

Сначала следующий код переключает совпадающие слова с искомыми (что мне не нужно).

Во-вторых, скрипт нацелен на узлы из тела (тегов), что также является нежелательным эффектом.

На основании скрипта может кто-то помочь с проблемами под рукой. Я пытался использовать функцию match без особого успеха. Я знаю, что есть плагины для этой конкретной задачи c, но я бы sh сделал это без них.

function search_x() {
  $('#hint_search').css('visibility', 'hidden');
  $('#hint_search').css('color', 'transparent');
  $('#nav_tooltip_2').css('height', '0');
  $('#nav_tooltip_1').css('height', '0');

  var search_word = prompt("Search for text", "");
  var s_reg = new RegExp(search_word, "gim");
  var str_n = $('body').text();
  var spn_str = "<mark>" + search_word + "</mark>";
  //var res = str_n.match(s_reg);

  if (search_word == null || search_word == "") {
    //if empty input clean mark tag
    alert("No input");
    $("body").html($("body").html().replace(/<mark>/gi, ''));
    $("body").html($("body").html().replace(/<\/mark>/gi, ''));
  } else {
    //clean previous searches
    $("body").html($("body").html().replace(/<mark>/gi, ''));
    $("body").html($("body").html().replace(/<\/mark>/gi, ''));
    $("body").html($("body").html().replace(s_reg, spn_str));
  };
}
...