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 :

Ancre avec javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Par défaut Ancre avec javascript
    Bonjour,

    j'ai un évènement qui sert afficher plus d'article quand on clique sur bouton plus.

    voici mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var plus = document.querySelector('.plus');
    var row2 = document.querySelector('.row2');
    plus.addEventListener('click',function(e) {
        row2.style.display = 'block';
    },false);
    la classe row2 est un bloc au debut il a un display : none quand je clique sur le bouton plus il s'affiche tout fonctionne bien jusqu'a maintenant.

    ma question c'est que je veux ajouter un autre evenement en meme temps quand je clique sur plus il affiche le row2 et en meme temps le scroll descend vers le bas

    J'ai testé cela mais sa ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plus.addEventListener('click',function() {
            window.scrollTo(0,document.body.scrollHeight);
        },false);
    mais quand j'ai rajouté setTimeout() a la fonction windows.scrollTo() sa fonctionne bien.

    donc je veux savoir si c'est possible de faire cela sans mettre un temp manuellement et merci.

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    normal

    lorsque tu click le div n'est pas affiché le scroll s'exécute donc jusqu'au bas de la page qui ne contient pas le div.

    peut être par là
    https://davidwalsh.name/detect-node-insertion
    A+JYT

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Quel est le comportement de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    plus.addEventListener('click',function(e) {
      row2.style.display = 'block';
      window.scrollTo(0,document.body.scrollHeight);
    },false);

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Par défaut
    @sekaijin
    je sais mais moi je cherche une solution pour ne pas donner un timeout manuellement le système détecte si y'a le div ou pas.

    @danielhagnoul
    Le row2 s'affiche mais le scroll ne descend pas il reste fix
    mais si je fais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    plus.addEventListener('click',function(e) {
      row2.style.display = 'block';
      setTimeout(function(){ window.scrollTo(0,document.body.scrollHeight); }, 10);
    },false);
    le scroll descend après 10ms.

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par MR-SMOOT Voir le message
    @sekaijin
    je sais mais moi je cherche une solution pour ne pas donner un timeout manuellement le système détecte si y'a le div ou pas.
    ...
    le lien que je t'ai donné traite justement de la detection du changement dans le DOM
    en clair il réagit lorsque le DOM est modifié I.E. le DIV est ajouté.

    le principe est comme toujours avec le DOM la programmation événementielle.
    lorsque l'utilisateur clique sur faire ceci
    lorsque le DOM est modifié faire cela
    ect.

    A+JYT

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Par défaut
    j'ai pas bien compris le tuto
    j'ai testé cela mais sa ne fonctionne pas
    mon js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var row2 = document.querySelector('.row2');
    plus.addEventListener('click',function(e) { 
        row2.style.display = 'block';
    },false);
     
    var insertListener = function(e){
    	if (e.animationName == "nodeInserted") {
    		 window.scrollTo(0,document.body.scrollHeight);
    	}
    }
     
    document.addEventListener("webkitAnimationStart", insertListener, false);
    mon css
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .row2
    {
        display: none;
        animation-duration: 2s;
        animation-name: nodeInserted;
    }

Discussions similaires

  1. Stopper le scroll sur une ancre avec javascript
    Par rocketter dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 07/05/2014, 15h10
  2. Lire #ancre de l'url avec javascript
    Par Are-no dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/12/2008, 14h44
  3. Defilement de la fenetre avec JavaScript
    Par black is beautiful dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/09/2004, 10h21
  4. Lien ASP avec javascript
    Par RATIER dans le forum ASP
    Réponses: 3
    Dernier message: 15/07/2004, 08h54
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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