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 :

Write OffsetTop avec un div en variable


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Write OffsetTop avec un div en variable
    Bonsoir à tous,

    je suis sur un petit projet et je bloque. Je suis débutant en javascript alors ma question va peut-être être stupide pour certain mais pour mois je bloque et cela m'empêche d'avancer ....

    en fait j'ai dans un page plusieurs div que je nomme par l'id respectivement id1, id2 etc ... le but étant d'en avoir pleins tout pleins.

    J'ai trouvé une petit fonction que me permet de retrouver les valeurs de chaque id et de les afficher en boucle.
    Hors moi je souhaiterai en plus d'afficher leur id, je voudrais que pour chaque div s'affiche le Top et le Left par rapport à la page.

    Exemple d'affichage du résultat:

    Id1 Top= 100px
    Left = 500 px
    id2 Top=300px
    Left= 50 px

    etc ....

    Hors avec ma "requete" j'obtiens bien les noms des div mais j'obtiens aussi un 0 à la place des valeurs Top et Left.

    Voici mon code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <html>
    <head>
    <script type="text/javascript">
    function affichage()
     
    {
    var tab_div=document.body.getElementsByTagName('div');
     
    for (i=0;i<7;i++){
     
    document.write("ligne numéro "+tab_div[i].id+"<br />");
    document.write(tab_div[i].offsetTop);
    document.write("<br />");
    document.write(tab_div[i].offsetLeft);
    document.write("<br />");
    }  
     }
     
     
     
    </script>
    </head>
     
     
    <body>
    <div id="id1" name="prout" style="position:absolute;left:100px;top:100px;">ESSAI</div>
    <div id="id2" name="qui pue" style="position:absolute;left:200px;top:600px;border-width:1px;border-color:lightblue;border-style:solid;width:250px;background-color:#cccccc;"></div>
     
    <div id="id3" name="prout" style="position:absolute;left:150px;top:100px;">ESSAI3</div>
    <div id="id4" name="prout" style="position:absolute;left: 350px;top:340px;">ESSAI4</div>
    <div id="id5" name="prout" style="position:absolute;left:400px;top:120px;">ESSAI5</div>
    <div id="id5" name="prout" style="position:absolute;left:450px;top:360px;">ESSAI6grhtjykiuj</div>
     
    <input type="button" value="Enregistrer les changements" onclick="affichage();"> 
    </div>
    </body>
    </html>
    Quelqu'un peut-il m'aider et me dire pourquoi j'obtiens ceci :

    ligne numéro id1
    0
    0
    ligne numéro id2
    0
    0
    ligne numéro id3
    0
    0
    ligne numéro id4
    0
    0
    ligne numéro id5
    0
    0
    ligne numéro id5
    0
    0

    Merci pour votre aide, vos conseils et votre indulgence cr je suis débutant mais tout aide, réponse ou orientation sera la bienvenu. Je galère vraiment sur ce petit truc même si je suis persuader que cela n'est pas quelque chose de bien compliqué.

    Merci pour votre aide

    PAz

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    En utilisant document.write après que ta page a été rendue, tu
    provoque l'ouverture d'un nouveau document. Si bien que les
    div que tu cherche à observer ne sont plus présents.

    Essaie ceci:

    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
     
    function affichage() {
    	var tab_div=document.body.getElementsByTagName('div');
    	var html = '';
    	for (var i=0;i<tab_div.length;i++) {
    		html += "ligne numéro "+tab_div[i].id+"<br />";
    		html += tab_div[i].offsetTop;
    		html += "<br />";
    		html += tab_div[i].offsetLeft;
    		html += "<br />";
    	}  
    	var e = document.createElement('div');
    	document.body.appendChild(e);
    	e.innerHTML = html;
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Un grand merci à toi marcha, c'est exactement ce que je voulais faire mais je n'y arrivait désespérément pas ... j'ai bien compris le code. Mille merci encore à toi.

    PAz

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

Discussions similaires

  1. Deux div avec height fixe et variable
    Par Reisors dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/04/2014, 15h37
  2. Réponses: 2
    Dernier message: 15/11/2007, 09h37
  3. mettre en page avec des div
    Par mathieu_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/08/2005, 11h35
  4. Réponses: 9
    Dernier message: 22/07/2005, 16h10
  5. Popup avec balise div
    Par Kerod dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/05/2005, 15h16

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