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 :

Perte de valeur - erreur de débutant je suppose


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 35
    Par défaut Perte de valeur - erreur de débutant je suppose
    Bonjour à tous,

    Je suis un petit nouveau en Javascript et je m'avoue un peu perdu avec tant de flexibilité niveau des types et compagnie. Mon problème ne doit pas être bien grave, mais pas moyen de le régler...

    Voici le 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
    function update(index) {
     
    g_debug.innerHTML = 'dx : ' + g_balls[index].dx + ' dy' + g_balls[index].dy;
    window.setTimeout(moveBall(index), REFRESH_RATE);
     
    }
     
     
    function trigger(index) {
     
    g_balls[index].dx =0;
    g_balls[index].dy = 4;
     
    g_debug.innerHTML = 'dx : ' + g_balls[index].dx + ' dy' + g_balls[index].dy;
     
    update(index);
    }
    Le print des valeurs dans la fonction 'trigger' est ok (dx = 0 et dy = 4 comme prévu). Par contre dans la fonction Update, dx est toujours ok, mais dy = NaN...

    J'ai trouvé plusieurs forums où ils parlent du 'type' NaN, mais je ne vois pas se qu'il se passe dans mon cas. Les deux print sont presque successifs, comment la valeur de dy peut-elle se "perdre" comme ca?

    Merci de votre aide.
    David

  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
    il s'agit juste d'une question de portée des variables ...
    n'étant pas declarées comme variables globales, elle n'ont de portée qu'au sein de la fonction ...
    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
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    NaN = Not a Number , essaye un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(' dy' + g_balls[index].dy);
    pour vérifier le contenu, puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt(' dy' + g_balls[index].dy)

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    parseInt(' dy' + g_balls[index].dy)
    tu veux dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' dy' +parseInt(g_balls[index].dy)

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    hupssss copier/coller c'est mal lol
    effectivement je voulais dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ' dy' +parseInt(g_balls[index].dy);

  6. #6
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 35
    Par défaut
    Merci de votre réponse. parseInt(g_balls[index].dy) ne me donnant pas plus d'informations, je me suis penché sur le problème de la portée des variables. Cependant vu mon code, je ne vois pas l'erreur Voici mon code précédent avec mes déclarations de variables.

    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
    39
    40
    41
    var g_balls = []; // global
     
    // constructor
    function Ball(radius, x, y, z, transformNode) {
    this.radius = radius;
    this.x = x;
    this.y = y;
    this.z = z;
    this.dx = x;
    this.dy = y;
    this.transformNode = transformNode;
    }
     
     
    // then in another function i create an instance
    function createBall(radius) {
    ...
    // create object
    var newBall = new Ball(radius, 0.0, 80.0, 0.0, newBallNode);
    g_balls[g_ballCount] = newBall;
    ...
    }
     
     
    function update(index) {
     
    g_debug.innerHTML = 'dx : ' + g_balls[index].dx + ' dy' + g_balls[index].dy;
    window.setTimeout(moveBall(index), REFRESH_RATE);
     
    }
     
     
    function trigger(index) {
     
    g_balls[index].dx =0;
    g_balls[index].dy = 4;
     
    g_debug.innerHTML = 'dx : ' + g_balls[index].dx + ' dy' + g_balls[index].dy;
     
    update(index);
    }
    L'instance de newBall étant créer dynamiquement, elle devrait être accessible globalement à travers g_balls (qui lui est global) non?

    Merci
    David

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/05/2006, 10h33
  2. [SQL] Erreur grand débutant echo / $data
    Par carelha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/05/2006, 12h01
  3. Message d'erreur pour débutant
    Par PhpDeb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 27/04/2006, 12h14
  4. erreur de débutant
    Par michel71 dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 08/03/2006, 00h26
  5. [sql server 7.0] valeurs de colonnes(débutante)
    Par kouta20 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2005, 18h27

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