CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Faire apparaitre du HTML avec Javascript ?

ApuestaDenia
ApuestaDenia
Niveau 8
18 mars 2022 à 01:53:18

Salut, j'ai un peu du mal a prononcer ma question.
J'essaye de faire une barre de recherche avec les résultats qui s'affichent juste en dessous de la barre en temps réel.

J'ai créé la "logique" du filtrage de la barre de recherche en fonction mais je n'ai aucune idée de comment je pourrais l'afficher.
Je suis débutant en Javascript et normalement ma fonction trie les fichiers JSON par leurs "title", maintenant faut pouvoir afficher les résultats en dessous de la barre de recherche si quelqu'un pourrait m'éclairer :ange:


// Search bar

const search = document.getElementById('search');
const matchList = document.getElementById('match-list');

// Search Data.json and filter it
const searchStates = async searchText => {
  const res = await fetch('../src/Data.json');
  const states = await res.json();

  //Get matches to current text input
  let matches = states.filter(state => {
    const regex = new RegExp(`^${searchText}`, 'gi');
    return state.title.match(regex);
  });

  if(searchText.length === 0) {
    matches = [];
  }

  console.log(matches);
};

search.addEventListener('input', () => searchStates(search.value));
Message édité le 18 mars 2022 à 01:53:40 par ApuestaDenia
Pseudo supprimé
Pseudo supprimé 19 mars 2022 à 00:09:13

Bonjour,

Et bien par exemple, il faut que tu ai une div avec un id

<div id="resultSearch"></div>

Et le Javascript va se charger de remplir la div search en fonction de tes résultats.

Pour ajouter du HTML dans cette div tu peux utiliser en js

document.getElementById('resultSearch').innerHTML = '<strong>Ceci est un exemple</strong>';

Et il ajouteras <strong>Ceci esr un exemple</strong> dans la div resultSearch :)

FionFion64
FionFion64
Niveau 16
22 mars 2022 à 18:45:03

Je pense que y a pas mal de mauvaises pratiques dans ton code :
Déjà tu devrais utiliser les queryParams dans ton fetch en lui passant une query (ton searchText) et ensuite selon les queryParams tu fais ta logique. https://stackoverflow.com/questions/9870512/how-to-obtain-the-query-string-from-the-current-url-with-javascript

J'ai l'impression que la déclaration de matches est un peu problématique vu que tout est asynchrone, j'imagine que tu vas peut être rencontrer des bugs, peut-être utiliser .then ce serait mieux

Ta fonction doit avoir un return matches

Le regex est vraiment bourrin, tu pourrais juste faire states.filter(({title}) => title.toLocaleString().includes(search.toLocaleString()))

Dans ton addEventListener, tu devrais juste appeler la fonction comme ça : search.addEventListener('input', searchStates); et aller chercher la value dans la fonction, je te conseille de prendre tout de suite cette habitude, lorsque tu voudras enlever un eventListener ce sera beaucoup plus simple.

Sinon VDD a tout dit pour le côté pratique dans l'html

Bon courage :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment