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 :

valeurs différentes avec .offsetWidth


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut valeurs différentes avec .offsetWidth
    Bonjour,

    Je suis en train de devenir à cause d'une fonction js.
    J'initialise la variable width avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    width = myPicture.offsetWidth;
    et quand je "log" la valeur se trouvant dans width et en direct avec l'alerte du fond, j'obtiens 2 valeurs différentes.

    Sérieusement, là je sèche. Je ne comprends pas mon erreure.
    Si quelqu'un avait un petit instant pour regarder, ça serait sympa.

    Merci d'avance.

    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
    function ChargeImage(NumImage) {
    width = 0;
    height = 0;
     
    var myPicture = document.images[2];
    myPicture.src = "./images/img" + (NumImage) +".jpg";
     
    width = myPicture.offsetWidth;
    height = myPicture.offsetHeight;
     
    var posX = (parseInt(leftMargin) - (parseInt(width) / 2 ));
    var posY = (parseInt(topMargin) - (parseInt(height) / 2 ));
     
    maDiv = document.getElementById('picture');
    // Warning!! Position "Y X"
    maDiv.style.padding = ""+posY+"px "+posX+"px";
    maDiv.onclick = function(){alert('click ! image en cours: '+myPicture.src+'->'+width+'X'+height+'VS'+myPicture.offsetWidth+'X'+myPicture.offsetHeight);}; 		  					
     }

  2. #2
    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
    déja les deux première lignes de la focntion !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    width = 0;
    height = 0;
    ne jamais utiliser des mots réservés !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mywidth = 0;
    myheight = 0;
    ensuite pour ce qui est des différences obtenus, tu modifies le padding ...

    renseignes toi sur le boxtype ...http://www.w3.org/TR/CSS2/box.html#box-dimensions
    le padding s'ajoute dans les dimensions offset ...
    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 !

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut
    Merci beaucoup pour ta réponse.
    En effet, j'ai complètement zappé les conventions, c'est corrigé.
    Cependant, je ne pense pas que le problème vienne du padding.

    Je m'explique:
    L'objectif de cette fonction est de faire défiler une image après chaque clic sur un bouton.
    D'après ce que j'ai remarqué, seulement quelque fois, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myWidth = myPicture.offsetWidth;
    garde les dimensions de l'image précédente.
    C'est pour cette raison que j'ai initialiser les variable myWidth et myHeight à zéro.

    Si je simplifie ma fonction de la façon suivante, je me retrouve avec 2 taille différentes. Malgré la réinitialisation des 2 valiables de taille.
    C'est vraiment un comportement étrange.
    Voici l'alert qui s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ChargeImage(NumImage) {
    myWidth = 0;
    myHeight = 0;
     
    var myPicture = document.images[2];
    myPicture.src = "./images/img" + (NumImage) +".jpg";
     
    myWidth = myPicture.offsetWidth;
    myHeight = myPicture.offsetHeight;
     
    maDiv = document.getElementById('picture');
    maDiv.onclick = function(){alert('click ! image en cours: '+myPicture.src+' -> '+myWidth+'X'+myHeight+' VS '+myPicture.offsetWidth+'X'+myPicture.offsetHeight);};
    As-tu une autre idée? Peut être un problème de cache du navigateur?

  4. #4
    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
    si c'est le cache tu le saura en essayant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var myPicture = document.images[2];
    myPicture.src = "./images/img" + (NumImage) +".jpg?ts="+new Date().getMilliseconds();
    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 !

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut
    J'ai fais quelques essais et le temps varie beaucoup entre min 7 et max 723.
    Trouves-tu cela représentatif?

  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
    peu importe le temps ... il s'agit de contourner le cache et forcer le rechargement de l'image depuis le serveur ...

    autre point qui peut jouer: le temps de chargement de l'image ...
    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 !

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

Discussions similaires

  1. [XL-2003] Comptabiliser le nombre de valeurs différentes avec un critère
    Par Gaignun dans le forum Excel
    Réponses: 8
    Dernier message: 24/01/2017, 10h25
  2. Réponses: 1
    Dernier message: 18/07/2013, 13h52
  3. Réponses: 2
    Dernier message: 05/07/2012, 11h59
  4. Réponses: 5
    Dernier message: 20/03/2009, 10h31
  5. Réponses: 3
    Dernier message: 22/02/2008, 09h55

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