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

219
Views
Actualice activamente DOM en keyup en una entrada, verifique si el valor de entrada está incluido como un valor dentro de las propiedades de una matriz de objetos

Estoy trabajando con esta API: http://hp-api.herokuapp.com/api/characters , que devuelve una matriz de objetos. Tengo una entrada en mi HTML que tiene un detector de eventos "keyup".

 document.getElementById('search').addEventListener('keyup', filterWizards)

Objetivo: quiero buscar activamente a través de la matriz de objetos devueltos por la API para ver si el nombre o el valor de las propiedades de la casa incluye el texto del elemento de entrada. Luego filtraré el DOM para incluir información basada en lo que se escribe

Ejemplo: si un usuario comenzó a escribir Harry Potter; "Har..." mi programa comenzará a buscar en cada objeto de la matriz de objetos para ver si el objeto incluye "Har" como parte del texto del nombre o propiedad de la casa. O tal vez tenían la intención de buscar en una casa como Gryffindor, cuando comenzaron a escribir Gryffindor, pude filtrar a través de la variedad de objetos y elegir hacer cosas como mostrar los caracteres en mi DOM que cumplen con el criterio.

Datos devueltos desde la API:

 let characters = 'http://hp-api.herokuapp.com/api/characters'; fetch(characters) .then(res => res.json()) // parse response as JSON .then(data => { console.log(data); }) .catch(err => { console.error(`error ${err}`) });

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Suponiendo un campo de entrada con una identificación de "entrada", puede filtrar los resultados para que coincidan con el valor del campo de entrada:

 <input id="input"> <script> fetch(characters) .then(res => res.json()) // parse response as JSON .then(data => { console.log(data); let re = new RegExp(document.getElementById('input').value); let matches = data.filter(function(elmt){ return elmt.name.match(re); }); console.log(matches); }) .catch(err => { console.error(`error ${err}`) }); </script>
about 4 years ago · Juan Pablo Isaza Report

0

Esto es lo que haría:

  1. Deshabilite el campo de búsqueda hasta que los datos estén disponibles.
  2. Rellene una lista de datos con las coincidencias de búsqueda que encuentre usando el filter y una comparación datalist toLowerCase() (para har encuentre Harry Potter ).

 const search = document.getElementById('search'), characters = document.getElementById('characters'); let searchList; fetch('http://hp-api.herokuapp.com/api/characters') .then(res => res.json()) // parse response as JSON .then(data => { searchList = data; enableSeach(data); updateDatalist(''); }) .catch(err => { console.error(`error ${err}`) }); function enableSeach(data) { search.disabled = false; search.placeholder = 'Type to search'; search.addEventListener('input', () => { updateDatalist(search.value); }); } function updateDatalist(searchTerm) { characters.innerHTML = ''; searchList.filter(char => char.name.toLowerCase().includes(searchTerm.toLowerCase())).forEach(({name}) => { let option = document.createElement('option'); option.value = name; characters.append(option); }) }
 <input id="search" type="search" placeholder="Fetching data..." disabled list="characters" autocomplete="false"> <datalist id="characters"></datalist>

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!