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 :

Scroll up d'un div à la génération d'un autre div


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut Scroll up d'un div à la génération d'un autre div
    Bonjour, je vais essayer d'être le plus clair possible, mais ça risque d'être compliqué étant donné que je ne comprend pas vraiment mon problème, c'est pour cela que je fais appel à vous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div id="1" style="overflow:scroll">
      <li onclick="fct()" />
      <li ... />
      ...
    <div>
    Voila ma structure à peu près, la fonction fct() doit récupérer selon un bdd d'autres <li> et les afficher à coté dans un nouveau <div id="2" />.(il passe aussi en classe selected)
    Mon problème :
    quand le nombre d'élément li dépasse sur l'axe des y, la scroll bar se dégrise, parfait, et par contre quand je clique sur un élément en bas le div va se scroller vers le haut tout seul, et uniquement pour les élément générant un nouveau div.

    Je cherche un peu partout je n'ai pas de #ANCHOR.


    Je reste dispo si vous avez besoin de plus de précision, dites moi si mon problème vous dit quelque chose.

    Merci.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonsoir,
    vraiment pas saisi, je pense que le mieux est une page simplifiée en ligne et/ou plus de code, pour éventuellement visualiser...rechargement page, Ajax ???

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Par défaut
    Pourquoi t'utilises pas un select sur plusieurs lignes plutot qu'une div avec des li ?

    car la c'est pas très conforme html et tu reinventes la roue quand meme.

    Un select avec un onchange="fct()" c'est quand même beaucoup plus simple

  4. #4
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Citation Envoyé par DDNetweaver Voir le message
    Pourquoi t'utilises pas un select sur plusieurs lignes plutot qu'une div avec des li ?

    car la c'est pas très conforme html et tu reinventes la roue quand meme.

    Un select avec un onchange="fct()" c'est quand même beaucoup plus simple
    Je suis entièrement d'accord avec toi, le seul soucis c'est qu'en fait le cahier des charges vient de changer et je peux difficilement niveau temps faire machine arrière au niveau de la génération des mes éléments.

    @NoSmoking, je te concède que c'est mal expliqué

    Voila le code simplifié qui réagi exactement pareil:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <html>
    <head />
    
    <body>
    <div id="aa">
    	<div id= "bb" style="height:50px;overflow-y:scroll;width:100px;">
               <ul>	
                    <li onclick="fct();"> 1 </li>
    		<li onclick="fct();"> 2 </li>
    		<li onclick="fct();"> 3 </li>
    		<li onclick="fct();"> 4 </li>
    		<li onclick="fct();"> 5 </li>
    		<li onclick="fct();"> 6 </li>
    		<li onclick="fct();"> 7 </li>
    		<li onclick="fct();"> 8 </li>
    		<li onclick="fct();"> 9 </li>
    		<li onclick="fct();"> 0 </li>
               </ul>
    	</div>
    </div>
    <script>
    function fct(){
    	document.getElementById('aa').innerHTML += '<div>test</div>';
    }
    </script>
    </body>
    </html>
    Donc le soucis vient du innerHTML je pense.

  5. #5
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    J'ai trouvé une piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(div_id).scrollTop = (document.getElementById(li_id).offsetTop-206);
    Ce qui me chagrine c'est que j'ai a utilisé ce 206 que j'ai trouvé je ne sais comment !


    en gros scrollTop permet de se positionner à l'intérieur d'un div scrollable, le but étant de récupérer l'offset de l'élément cliqué pour le repositionner après que le innerHTML += 'div' ai fais des siennes. Le soucis c'est que le offsetTop bien que l'élément étant en position relative, me renvoi l 'offset absolut que j'affecte a un offset relatif.
    L'offsetTop de ma div est de 196. l'offset heigth d'un li est de 30. Mais impossible de retomber sur le 206 seul param qui fait tout bien réagir.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    heu des li tout seuls ... ???

    il manque ...
    enfin quelque chose quoi ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Citation Envoyé par Pymento Voir le message
    Donc le soucis vient du innerHTML je pense.
    tout juste, il n'y a aucune raison d'avoir à repositionner la div contenue si l'ajout d'un élément se fait de façon "clean" vai le méthodes createElement et autre appendChild
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function fct(){
      var oDiv  = document.getElementById('aa');
      var oNode = document.createElement('DIV');
      var oTxt  = document.createTextNode('test');
      oNode.appendChild(oTxt);
      oDiv.appendChild( oNode);
    }
    Méfions nous de innerHTML et de ses effets de bord...

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

Discussions similaires

  1. Mettre un div a coté d'un autre div
    Par hraiwen dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 20/07/2009, 11h08
  2. Mettre un div en bas d'un autre div
    Par YannCo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/04/2009, 14h21
  3. Div qui fait baisser une autre div
    Par kate59 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 25/01/2009, 21h10
  4. Affichage d'un Div (menu) par dessus un autre div(contenu)
    Par guigui69 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 09/01/2009, 20h28
  5. hauteur <div> automatique par rapport à un autre <div>
    Par arnaud_verlaine dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 08/05/2008, 19h38

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