Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
¿Cómo puedo resaltar los resultados de búsqueda en vivo con JavaScript?

Estoy tratando de encontrar una manera de resaltar los resultados de búsqueda en vivo cuando el usuario ingresa un término de búsqueda en el campo de entrada. El objetivo de la búsqueda es una lista desordenada. Estoy tratando de usar expresiones regulares para resaltar las coincidencias, pero cuando trato de reemplazar los resultados con una versión resaltada de ellos mismos, aparece un TypeError indefinido:

 "Cannot read properties of undefined (reading 'replace')"

Sé que el error está en la última línea de la función displayMatches pero no puedo descifrar la sintaxis correcta. ¿Alguien podría ayudar?

Aquí está el HTML:

 <ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> <li>item 6</li> <li>item 7</li> <li>item 8</li> <li>item 9</li> <li>item 10</li> </ul> <input id="search" type="text">

JavaScript:

 let searchBar = document.getElementById("search"); const displayMatches = () => { let userInput = document.getElementById("search").value; let target = document.getElementsByTagName("li"); let regex = new RegExp(`${userInput}`, 'g'); target.innerHTML = target.innerText.replace(regex, match => `<mark>${match}</mark>`); } searchBar.addEventListener('keyup', displayMatches);
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El error es target.innerHTML y target.innerText

Obtuviste target de document.getElementsByTagName("li") . Esta declaración devuelve una matriz de todos sus elementos li . Pero las propiedades innerHTML e innerText no pueden manejar matrices, solo pueden manejar elementos individuales, por lo que debe recorrer sus li s:

 for (i = 0; i < target.length; i++) { target[i].innerHTML = target[i].innerText.replace(regex, match => `<mark>${match}</mark>`); }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!