@merindema
Одесса, 20 лет

Как выводить весь текст из textarea что бы найденное слово было подсвеченным красным?

Сделал поиск слова в тексте, подскажите как реализовать чтобы выводился весь текст , а искомое слово было подсвеченно красным?

  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
@StiflerProger
Немного поправил твой код ещё, newArr и newArr_lengh глаза резали)

function myPoisk() {
  var outPut = document.getElementById("output");
  var slovo = document.getElementById("input_poisk").value;
  var text = document.getElementById("text_area").value;
  var slova = text.split(' '); // массив исходных слов
  var dopVar = 0;
  slovo = slovo.trim();

  if (slovo == '') {
    alert('Введите слово!')
  } else {
    var i = 0;
    var letterIndex = 0; // индекс текущего символа
    for (i; i < slova.length; i++) {
      if (slovo.toLowerCase() == slova[i].toLowerCase()) {
        //outPut.innerHTML = 'Ваше слово найдено!' + '<br>' + '<br>' + `<span>${newArr[i]}</span>`;
        finish(text, letterIndex, slova[i].length);
        dopVar = 1;
        return false;
      }
      letterIndex += slova[i].length + 1; // +1, потому-что нужно учитывать пробелы
    }
    if (dopVar != 1) {
      alert("Такого слова нет!");
    }
  }
}

// Функция принимает координаты, которые нужно подсветить,
// и выводит в #output
function finish(text, from, size) {

  const answer = text.substr(from, size);
  const _text = text.replace(answer, `<span>${answer}</span>`);

  document.getElementById("output").innerHTML = _text;

}


Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BFSold1er
мой версия
function myPoisk() {
            var outPut = document.getElementById("output");
            var slovo = document.getElementById("input_poisk").value;
            var text = document.getElementById("text_area").value;
            
            if(!slovo) 
                alert("введите слово")
            else{                
                if (text.indexOf(slovo)) {
                    outPut.innerHTML =text.replace(slovo,'<span style="color:red;">'+slovo+'</span>')
                }
            }
        }

но потом почитал задание в html и уже в лом переписывать =)
переборол лень , все равно не спится
function myPoisk(){
            var slovo = document.getElementById("input_poisk").value;
            var text = document.getElementById("text_area").value;
            var outPut = document.getElementById("output");

            var arr = text.trim().split(' ')
    
            if(!slovo) 
                alert("введите слово")
            else{                
                for(let i=0;i<arr.length;i++)
                    if(arr[i]==slovo.trim()) arr[i]="<span>"+arr[i]+"</span>"
                outPut.innerHTML=arr.join(' ')
            }
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы