IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Stopper un affichage en cours


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut Stopper un affichage en cours
    Bonjour,

    voici mon souci:
    un tableau affiche des résultats . Dans chaque ligne de résultat, il y a une bouton qui permet d'avoir plus de renseignement sur la ligne en question.
    un modale s'ouvre et affiche les renseignements complémentaires.

    Dans cette modale , on affiche des images , et d'autres choses.
    la partie qui affiche les images est une liste remplie avec des <li>, une image par <li>.
    Comment je récupère les images: à chaque ligne du tableau correspond un code ( id ) avec lequel je fait une requète et chaque id peut retourner 0 ou plusieurs
    url qui pointent vers une image.
    J'ai quelque part dans mon javascript une fonction qui ajoute à la liste un <li> contenant une image <img> avec pour attribut "src", l'url en question.

    je peut cliquer sur une ligne qui va ensuite me charger dans la modale 88 images !!
    Ça met un certain temps, et si pendant ce temps, je ferme la modale et que je clique sur une autre ligne du tableau, les images qui n'ont pas eu le temps de charger
    continuent de s'afficher dans la nouvelle modale ! ( alors qu'elles ne correspondent pas du tout au sujet ) et s'ajoutent ensuite les images qui correspondent vraiment à la ligne en question.

    Exemple:
    je clique sur la première ligne, 100 images sont appelées, j'en laisse 40 s'afficher, je ferme la modale et je clique sur la ligne numéro 2.
    Celle-ci appelle 3 images et du coup: les 60 images de la première ligne s'affichent sur la modale de la deuxième ( pas prévu ) et viennent ensuite les 3 images voulues.

    Comment éviter ce phénomène. Parce qu'au final, ça n'affiche pas les bonnes informations !!!

  2. #2
    Membre régulier Avatar de tag9724
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2021
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2021
    Messages : 64
    Points : 113
    Points
    113
    Par défaut
    Il suffit de rajouter une condition pour stopper l'ajout d'image dans la modal quand on quitte celle-ci ou en ouvre une autre.

    Une solution possible serais par exemple de créer une variable qui s'incrémenterais à chaque ouverture de modal, ainsi tu aurais un "index" de la modal ouverte.
    Ca pourrais ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let modalIndexGlobal = 0
     
    function ouvrirModal() {
      modalIndexGlobal += 1
      const modalIndexLocal = modalIndexGlobal
     
      /* Ici l'ajout successif des images */
     
    }

    De ce fait dans ta fonction ouvrirModal tu pourras vérifier avant l'insertion d'une image dans la modal si l'index actuel correspond toujours a celui global, si les deux ne correspondent pas cela voudra dire qu'une autre modal aura été ouverte entre temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (modalIndexLocal === modalIndexGlobal) {
      ajouterImage()
    }


    Après il y a bien des façons de faire ce que tu demande et très certainement de meilleurs méthodes que celle-ci mais ce sera déjà un bon début je pense.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    il se trouve que j'ai tenté ça avant de voir votre réponse !!!!
    Mais d'une autre façon:
    une variable qui est false au départ et passe à true si on appui sur la croix pour fermer.
    avec cette condition, je stoppe les requêtes et l'affichage d'image ( même si les requêtes se font rapidement et sont terminées avant de cliquer, c'est plus prudent)

    Et effectivement, c'est ce qu'il fallait faire. J'aurai trouvé tout seul ?
    (comme quoi après une bonne nuit de sommeil )

    Merci quand même : ça confirme que mon approche était la bonne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Stopper exécution script en cours ?
    Par totoc1001 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/09/2014, 15h24
  2. Class library : affichage en cours du traitement
    Par stever50 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 04/03/2009, 14h39
  3. [script.aculo.us] Appear : stopper l'effet en cours d'execution
    Par zemeckis dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 09/02/2009, 09h44
  4. comment faire pour stopper une action en cours ?
    Par zabdaniel dans le forum C#
    Réponses: 1
    Dernier message: 15/01/2009, 16h07
  5. Stopper une fonction en cours d'execution
    Par eponyme dans le forum C
    Réponses: 14
    Dernier message: 10/01/2008, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo