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

jQuery Discussion :

Variable numérique considérée comme NaN lorsque l'appli est mise sur écran d'accueil iPhone


Sujet :

jQuery

  1. #1
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut Variable numérique considérée comme NaN lorsque l'appli est mise sur écran d'accueil iPhone
    Bonjour à tous,
    Je cherche à comprendre pourquoi bien que fonctionnant parfaitement sur (Safari desktop et sur Safari iPhone) mon appli ne fonctionne plus correctement lorsqu'elle est placée sur l'écran d'accueil de mon iPhone. (Dans safari, bouton + Sur l'écran d'accueil).

    Extrait de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var Cal  = 101;    /* Valeur normalement populée par ma db */
    var G_DepEnerg = 2938.52;
    var PcCal = (Cal / (G_DepEnerg / 100));
    /* Utilisation de la fonction Math.round10 : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/round */
    var NumPCal = Math.round10(PcCal, -1);  
    var TxtNumPCal = (NumPCal + "%");
    $("#ValCalPc").html(TxtNumPCal);
    var PcCalComplet = "<span style='width:" + NumPCal + "%;'></span>";
    Ce qui me donne le résultat désiré sur (Safari Desktop et sur Safari IPhone):
    Nom : Desktop.png
Affichages : 249
Taille : 25,4 Ko
    Par contre lorsque j'ajoute l'appli sur l'écran d'accueil depuis Safari iPhone (bouton + Sur écran d'accueil) et que je lance l'appli j'obtient:
    Nom : OnIphone.png
Affichages : 220
Taille : 19,7 Ko
    ????
    Quelqu'un voit-il d'ou vient le problème? Pour ma part je nage dans la panade !
    Si je fais un typeof de la variable elle est bien du type number

    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    elle est définie où ta méthode round10, pourquoi ne pas utiliser simplement PcCal.toFixed(1), beaucoup plus light ?

  3. #3
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Bonjour NoSmoking,
    en effet elle plus light, c'est ce que j'utilisais de base, mais à force de recherche pour résoudre mon problème j'en suis venu à utiliser celle-ci:
    https://developer.mozilla.org/fr/doc...aux/Math/round
    qui m'offre d'autres possibilités que j'utilise ailleurs dans mon appli.

    Mais en définitive mon problème n'est pas le fait que ce ne soit un numérique ou pas (bien que chaque variable aient été testée dans la console), la question est :
    $("#ValCalPc") étant une simple DIV avec une classe .ui-block-a dans laquelle je n'essaie qu'afficher une valeur ex:11.5%.
    même si je transforme cette valeur en texte par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var AffValeur = TxtNumPCal.toString();
    et que j'essaie de l'afficher par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ValCalPc").html(AffValeur);
    /* ou par */
    $("#ValCalPc").text(AffValeur);
    sur Safari desktop ou iPhone cela fonctionne parfaitement
    Mais lorsque j'ajoute l'appli sur l'écran d'accueil de l'iPhone et que je la lance, il s'obstine à afficher NaN à la place de ce texte.
    Pourquoi un numérique semble-t'il obligatoire ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Si tu as un affichage de NaN% c'est qu'à un moment ta variable vaut NaN !
    Donc en remontant on a : var TxtNumPCal = (NumPCal + "%") d'où NumPCal doit valoir NaN, est ce le cas ?

    ... et ainsi de suite en remontant ...

  5. #5
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Non, aucune erreur, j'ai beau remonter aussi haut que je veux chaque variable testée par typeOf donne comme résultat number.

    Je rappelle que tout fonctionne parfaitement dans Safari sur desktop ainsi que sur iPhone.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    et même quand tu fais un alert(typeof TxtNumPCal) juste avant le $("").html(TxtNumPCal) ?

  7. #7
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Cela me donne "number" dans les trois modes

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Le brouillard s’épaissit. Peux tu montrer le morceau de code HTML qui est concerné par l'affichage ?

  9. #9
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Voici
    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
     
    <div data-role="content">
                        <div class="containerDetAlim">
                            <div class="Espace_5px"></div>
                            <div id="Txt_AlimDesc" class="container_80pc ContBox" ></div>
                            <div id="Cont_IndGly"></div>
                            <div class="Espace_15px"></div>
                            <div id="BlocValeur" class="container_80pc ContBox"> 
                                <div class="ui-grid-a" id="GridValAlim">
                                    <div class="ui-block-a" id="Txt_ValeurPour"></div>
                                    <div class="ui-block-b" id="Val_ValeurPour"></div> 
                                    <div class="ui-block-a" id="ValCal"></div>    
                                    <div class="ui-block-b" id="TxtValCal"></div>
                                </div> 
                                <div class="ui-grid-a" id="GridValCal">
                                    <div class="ui-block-a" id="ValCalPc"></div>  <!-- DIV CONCERNEE -->   
                                    <div class="ui-block-b" id="TxtValCalPc"></div>
                                </div>
                                <div class="meter nostripes" id="Prog_Calories" >
                                    <span id="spanMeter"></span>
                                </div>
                            </div>
     
                        </div>
                    </div>

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    au temps pour moi, il faut tester non pas le type mais la valeur car typeof NaN est number

  11. #11
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Not a Number est de type Number Si quelqu'un peut m'expliquer ça ???

    Le résultat sur Safari des deux côtés me donne la valeur soit 12.1 (j'ai enlevé le % pour être sûr qu'il n'y ai pas confusion) par contre lorsque j'execute l'appli sur iPhone il me donne NaN.

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Not a Number est de type Number Si quelqu'un peut m'expliquer ça ???
    Voir : Number

    Il te faut regarder à quel moment une valeur devient NaN en repartant du début.

    Un point qui m'avais échappé est « lorsqu'elle est placée sur l'écran d'accueil de mon iPhone. » qu'est ce à dire !?!

  13. #13
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Bonjour,
    @NoSmoking => Placer sur l'écran d'accueil consiste à ouvrir l'appli dans safari iPhone et par clic dans les options sur le bouton 'plus' "ajouter sur écran d'accueil" transforme la page html en application stand alone sur l'iPhone.

    Mais je crois avoir cerné le problème:

    Dans ma DB les valeurs sont au format Float mais avec un séparateur ',' ex:12,5 et dans jQuery lorsque l'on fait un parseFloat il n'est tenu compte que de la partie avant la virgule.

    Deux options s'offre à moi:
    1) modifier toutes mes intros dans la db = fastidieux (des milliers d'intros à modifier);
    2) Avoir la possibilité de transformer le format dans mon script : var C = Cal.replace(",","."); ne semble pas fonctionner.

    Un idée ?

  14. #14
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    C'était bien le problème.
    J'ai ajusté la db

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

Discussions similaires

  1. [Débutant] Fichier Excel: valeurs numériques considérées comme du texte
    Par sassélesas dans le forum MATLAB
    Réponses: 5
    Dernier message: 24/06/2014, 17h04
  2. Erreur lorsque l'appli est publiée
    Par planeurbret dans le forum VB.NET
    Réponses: 2
    Dernier message: 21/01/2012, 17h46
  3. Mise à jour des données du CR lorsque la DB est mise à jour
    Par j0hn01 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/02/2009, 14h33
  4. [Tableaux] Variable non considéré comme un chiffre
    Par Merlon dans le forum Langage
    Réponses: 7
    Dernier message: 27/06/2007, 12h08
  5. Réponses: 9
    Dernier message: 29/04/2006, 13h15

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