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 :

Déduire des % en JS ?


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut Déduire des % en JS ?
    Bonjour,

    J'ai créer il y a quelques temps un script JS permettant de calculer une somme de boulets nécessaires et prix en monnaie du jeux, bref passons.
    J'ai donc voulu ajouter des nouvelles fonctionnalités ajouter au jeux, qui déduise la somme de boulets en %, ensuite le script regarde la somme de boulets et calcul le prix.

    Voici donc le script:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    function Trenner(number) {
    number = '' + number;
    if (number.length > 3) {
    var mod = number.length % 3;
    var output = (mod > 0 ? (number.substring(0,mod)) : '');
    for (i=0 ; i < Math.floor(number.length / 3); i++) {
    if ((mod == 0) && (i == 0))
    output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
    else
    // variables
    output+= '.' + number.substring(mod + 3 * i, mod + 3 * i + 3);
    }  
    return (output);
    }
    else return number;
    }
    function eliteMapCalc(){
    var AlevelA = document.eliteMapCalc.Alevel.value;
    var BlevelA = document.eliteMapCalc.Blevel.value;
    var GIles = document.eliteMapCalc.GIles.value;
    var Munni1 = document.eliteMapCalc.Munni1.value;
    var Munni2 = document.eliteMapCalc.Munni2.value;
    var Munni3 = document.eliteMapCalc.Munni3.value;
    var Cloche = document.eliteMapCalc.Cloche.value;
    var PteElt = document.eliteMapCalc.PteElt.value;
    var Nvelit = document.eliteMapCalc.Nvelit.value;
    var Alevel = AlevelA.split(";");
    var Blevel = BlevelA.split(";");
    if(Blevel[0] - Alevel[0] <= 0) {
    Fehler = "ERREUR: Vous ne pouvez pas descendre dans les niveaux élites!";
    alert(Fehler);
    } var Standart = 50 - GIles;
    var Prem = 47.5 - GIles;
    var Rab = 37.5 - GIles;
    var RaPre = 35 - GIles;
    var EgMath = Math.round(Cloche+PteElt+Nvelit*100)/100;
    var Case1 = Blevel[0] - Alevel[0] - Munni1 - Munni2 - (2* Munni3) - EgMath;
    var Case2 = (Case1/100)*Standart;
    var Case3 = (Case1/100)*Prem;
    var Case4 = (Case1/100)*Rab;
    var Case5 = (Case1/100)*RaPre;
    var Link = "http://seafightastuces.com/app/webroot/files/images/guides/elites/";
    document.eliteMapCalc.Kugelbedarf.value=(Trenner(Math.ceil(Case1)));
    document.eliteMapCalc.Normal.value=(Trenner(Math.ceil(Case2)));
    document.eliteMapCalc.Premium.value=(Trenner(Math.ceil(Case3)));
    document.eliteMapCalc.Rabatt.value=(Trenner(Math.ceil(Case4)));
    document.eliteMapCalc.PremRab.value=(Trenner(Math.ceil(Case5)));
    document.img.src = Link+Alevel[1];
    document.img1.src = Link+Blevel[1];
    }

    Les partis me posant problème sont en gras.
    En effet, 1ère ligne en gras, je calcul le % de boulets en moins utilisés selon le niveau d'amélioration (de 20 + 9 + 20 par exemple). Ensuite je garde la valeur, je calcul le nombre de boulets (par exemple pour l'élite 1 à 10 il me faut 100.000.000 points) et je veut déduire à ces 100.000.000 le pourcentage calculé dans EgMath, or impossible, ça ne me soustrait pas comme je veut.
    Je ne vois pas trop comment faire, si vous aviez des idées...
    Merci d'avance;

    CDT

  2. #2
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut,

    Il est possible que tu ne respectes pas les priorités des signes (division, multiplication...)

    Je te conseille donc de décomposer ton code ou d'ajouter des parenthèses à certains endroits.

    Il est clair que si tu ne respecte pas les priorités des signes (* / + - %), ton résultat ne sera jamais correcte.

    Bonne fin de W.E.

    beegees

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    La propriété value du champ de formulaire correspond à du texte et pour du texte, le + correspond à la concaténation.
    Regarde du coté de parseInt() ou parseFloat() avant d'additionner.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par Bovino Voir le message
    La propriété value du champ de formulaire correspond à du texte et pour du texte, le + correspond à la concaténation.
    Regarde du coté de parseInt() ou parseFloat() avant d'additionner.
    Bien vu Bovino.

    Très bonne journée à toi.

    beegees

  5. #5
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Merci pour vos réponses,
    Voici comment ça se passe au niveau du HTML:

    Code html : 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
                           <tr>
            <td colspan="2">texte</td>
            <td align="right">
            <select id="Nvelit" size="1" name="Nvelit">
            <option value="0">Navire élite</option>
            <option value="0">---------------------------</option>
            <option value="0">Aucun</option>
            <option value="5">Supremacy + élite 15 (+5%)</option>
            <option value="6">Supremacy + élite 18 (+6%)</option>
            <option value="7">Supremacy + élite 21 (+7%)</option>
            <option value="7">Sea Hawk (+7%)</option>
            <option value="8">Supremacy + élite 24 (+8%)</option>
            <option value="9">Supremacy + élite 27 (+9%)</option>
            </select>
            </td>
          </tr>

    je ne vois pas trop comment je pourrais ajouter un ParseInt au code...

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pas dans le code HTML
    Dans cette partie-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var AlevelA = document.eliteMapCalc.Alevel.value;
    var BlevelA = document.eliteMapCalc.Blevel.value;
    var GIles = document.eliteMapCalc.GIles.value;
    var Munni1 = document.eliteMapCalc.Munni1.value;
    var Munni2 = document.eliteMapCalc.Munni2.value;
    var Munni3 = document.eliteMapCalc.Munni3.value;
    var Cloche = document.eliteMapCalc.Cloche.value;
    var PteElt = document.eliteMapCalc.PteElt.value;
    var Nvelit = document.eliteMapCalc.Nvelit.value;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Je ne peut pas mettre ça,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var BlevelA = document.Elevelrechner.Blevel.value;
    je récupère ce que l'utilisateur à saisi dans le formulaire.
    Si je met un parseFloat, je ne peut pas récupérer les données mise par l'user...

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par SausauRjaws
    Si je met un parseFloat, je ne peut pas récupérer les données mise par l'user...


    Pourquoi ? Qu'est-ce qui t'empêche de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var BlevelA = parseInt(document.Elevelrechner.Blevel.value, 10);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut

    Je ne savais pas que le'on pouvait faire ainsi
    Mais maintenant il ne veut plus marcher ce script

  10. #10
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par SausauRjaws Voir le message

    Je ne savais pas que le'on pouvait faire ainsi
    Mais maintenant il ne veut plus marcher ce script
    Tu as firebug ? si oui, indique nous l'erreur et la position de cette erreur.

    beegees

  11. #11
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Voici ce que me sort Firebug:
    AlevelA.split is not a function

    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 calcMapElitbet29(){
    var BlevelA = parseFloat(document.Elevelrechner.Blevel.value, 10);
    var AlevelA = parseFloat(document.Elevelrechner.Alevel.value, 10);
    var Inseln = parseFloat(document.Elevelrechner.Inseln.value, 10);
    var Munni1 = parseFloat(document.Elevelrechner.Munni1.value, 10);
    var Munni2 = parseFloat(document.Elevelrechner.Munni3.value, 10);
    var Munni3 = parseFloat(document.Elevelrechner.Munni3.value, 10);
    var Cloche = parseFloat(document.Elevelrechner.Cloche.value, 10);
    var PteElt = parseFloat(document.Elevelrechner.PteElt.value, 10);
    var Nvelit = parseFloat(document.Elevelrechner.Nvelit.value, 10);
    var Alevel = AlevelA.split(";");
    var Blevel = BlevelA.split(";");
    if(Blevel[0] - Alevel[0] <= 0) {
    Fehler = "ERREUR: Vous ne pouvez pas descendre dans les niveaux élites!";
    alert(Fehler);
    } var Standart = 50 - Inseln;

  12. #12
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    ça change quelque chose si tu mets : ???

    AlevelA.split(';');

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    La syntaxe que je t'ai donnée n'est qu'un exemple d'utilisation... Renseigne-toi au préalable sur la syntaxe de parseFloat() et parseInt(), elles ne sont pas identiques notamment concernant le second argument.
    D'autre part, renseigne-toi aussi sur le résultat renvoyé : tu comprendras qu'elles renvoient des nombres, donc un nombre ne contient pas de ";" et surtout, un objet Number ne possède pas de méthode split() !
    A toi ensuite de déterminer à quel moment il faut transformer tes chaines (même si elles ne contiennent que des chiffres) en nombres pour faire une addition et non une concaténation...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    J'ai donc fait quelques recherches, j'ai conclu 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
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    function Trenner(number) {
    number = '' + number;
    if (number.length > 3) {
    var mod = number.length % 3;
    var output = (mod > 0 ? (number.substring(0,mod)) : '');
    for (i=0 ; i < Math.floor(number.length / 3); i++) {
    if ((mod == 0) && (i == 0))
    output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
    else
    // variables
    output+= '.' + number.substring(mod + 3 * i, mod + 3 * i + 3);
    }  
    return (output);
    }
    else return number;
    }
    function calcMapElitbet29(){
    var BlevelA = parseFloat(document.Elevelrechner.Blevel.value);
    var AlevelA = parseFloat(document.Elevelrechner.Alevel.value);
    var Inseln = parseFloat(document.Elevelrechner.Inseln.value);
    var Munni1 = parseFloat(document.Elevelrechner.Munni1.value);
    var Munni2 = parseFloat(document.Elevelrechner.Munni3.value);
    var Munni3 = parseFloat(document.Elevelrechner.Munni3.value);
    var Cloche = parseFloat(document.Elevelrechner.Cloche.value);
    var PteElt = parseFloat(document.Elevelrechner.PteElt.value);
    var Nvelit = parseFloat(document.Elevelrechner.Nvelit.value);
    if(Blevel[0] - Alevel[0] <= 0) {
    Fehler = "ERREUR: Vous ne pouvez pas descendre dans les niveaux élites!";
    alert(Fehler);
    } var Standart = 50 - Inseln;
    var Prem = 47.5 - Inseln;
    var Rab = 37.5 - Inseln;
    var RaPre = 35 - Inseln;
    var EgMath = Math.round(Cloche+PteElt+Nvelit*100)/100;
    var Ergebnis1 = Blevel[0] - Alevel[0] - Munni1 - Munni2 - (2* Munni3) - EgMath;
    var Ergebnis2 = (Ergebnis1/100)*Standart;
    var Ergebnis3 = (Ergebnis1/100)*Prem;
    var Ergebnis4 = (Ergebnis1/100)*Rab;
    var Ergebnis5 = (Ergebnis1/100)*RaPre;
    var Alevel = AlevelA.split(';');
    var Blevel = BlevelA.split(';');
    var Link = "http://seafightastuces.com/app/webroot/files/images/guides/elites/";
    document.Elevelrechner.Kugelbedarf.value=(Trenner(Math.ceil(Ergebnis1)));
    document.Elevelrechner.Normal.value=(Trenner(Math.ceil(Ergebnis2)));
    document.Elevelrechner.Premium.value=(Trenner(Math.ceil(Ergebnis3)));
    document.Elevelrechner.Rabatt.value=(Trenner(Math.ceil(Ergebnis4)));
    document.Elevelrechner.PremRab.value=(Trenner(Math.ceil(Ergebnis5)));
    document.img.src = Link+Alevel[1];
    document.img1.src = Link+Blevel[1];
    }
    Uncaught TypeError:

    Cannot read property '0' of undefined
    calcMapElitbet29
    (anonymous function)
    onclick

  15. #15
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Le problème c'est que je suis obligé de mettre ce ';' parce que :

    Code html : 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
       <select id="Alevel" size="1" name="Alevel">
            <option value="0;1.jpg" selected="selected">Elite
    1</option>
            <option value="40000;2.jpg">Elite 2</option>
            <option value="72400;3.jpg">Elite 3</option>
            <option value="128872;4.jpg">Elite 4</option>
            <option value="225526;5.jpg">Elite 5</option>
            <option value="387905;6.jpg">Elite 6</option>
            <option value="655559;7.jpg">Elite 7</option>
            <option value="1088228;8.jpg">Elite 8</option>
            <option value="1773811;9.jpg">Elite 9</option>
            <option value="2838098;10.jpg">Elite 10</option>
            <option value="4455814;11.jpg">Elite 11</option>
            <option value="6861954;12.jpg">Elite 12</option>
            <option value="10361551;13.jpg">Elite 13</option>
            <option value="15335095;14.jpg">Elite 14</option>
            <option value="22235888;15.jpg">Elite 15</option>
            <option value="31352602;16.jpg">Elite 16</option>
            <option value="42953065;17.jpg">Elite 17</option>
            <option value="57127577;18.jpg">Elite 18</option>
            <option value="73694574;19.jpg">Elite 19</option>
            <option value="92118218;20.jpg">Elite 20</option>
            <option value="111463043;21.jpg">Elite 21</option>
            <option value="130411761;22.jpg">Elite 22</option>
            <option value="148711761;23.jpg">Elite 23</option>
            <option value="166511761;24.jpg">Elite 24</option>
            <option value="183811761;25.jpg">Elite 25</option>
            <option value="200611761;26.jpg">Elite 26</option>
            </select>

  16. #16
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Tu fais un parsefloat sur tes values pour obtenir des floats (chiffres a virgules)
    et ensuite tu fais un split(';') sur ces floats...
    un float n'est pas une chaine de caractere donc split n'existe pas pour ce type.

    Ce que tu dois faire, c'est un split de tes values, récuperer le premier element de ton split (qui correspond a ta valeur) et faire un parsefloat ensuite.
    Exemple : <option value="40000;2.jpg">Elite 2</option>
    Tu fais un split => ca donne un tableau x[0] = 40000 et x[1] = 2.jpg
    tu fais un parsefloat de x[0] après et ca te donne tes valeurs sur lesquelles travaillées...

  17. #17
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    J'ai enlevé le ;1.jpg.
    J'ai fait ça sous une autre manière.

    J'ai donc "modifié", le script pour obtenir 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
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     function Trenner(number) {
    number = '' + number;
    if (number.length > 3) {
    var mod = number.length % 3;
    var output = (mod > 0 ? (number.substring(0,mod)) : '');
    for (i=0 ; i < Math.floor(number.length / 3); i++) {
    if ((mod == 0) && (i == 0))
    output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
    else
    // variables
    output+= '.' + number.substring(mod + 3 * i, mod + 3 * i + 3);
    }
    return (output);
    }
    else return number;
    }
    function beta28(){
    var AlevelA = parseFloat(document.Elevelrechner.Alevel.value);
    var BlevelA = parseFloat(document.Elevelrechner.Blevel.value);
    var Inseln = parseFloat(document.Elevelrechner.Inseln.value);
    var Munni1 = parseFloat(document.Elevelrechner.Munni1.value;)
    var Munni2 = parseFloat(document.Elevelrechner.Munni2.value);
    var Munni3 = parseFloat(document.Elevelrechner.Munni3.value);
    var Cloche = parseFloat(document.Elevelrechner.Cloche.value);
    var PteElt = parseFloat(document.Elevelrechner.PteElt.value);
    var Nvelit = parseFloat(document.Elevelrechner.Nvelit.value);
    var Alevel = AlevelA.split(';');
    var Blevel = BlevelA.split(';');
    if(Blevel - Alevel <= 0) {
    Fehler = "ERREUR: Vous ne pouvez pas descendre dans les niveaux élites!";
    alert(Fehler);
    }
    var Standart = 50 - Inseln;
    var Prem = 47.5 - Inseln;
    var Rab = 37.5 - Inseln;
    var RaPre = 35 - Inseln;
    var PELrabbat = Cloche+PteElt+Nvelit;
    var PELaddct = Blevel - Alevel - Munni1 - Munni2 - (2* Munni3) ;
    var Ergebnis1 = (PELaddct/100)*PELrabbat;
    var Ergebnis2 = (Ergebnis1/100)*Standart;
    var Ergebnis3 = (Ergebnis1/100)*Prem;
    var Ergebnis4 = (Ergebnis1/100)*Rab;
    var Ergebnis5 = (Ergebnis1/100)*RaPre;
    document.Elevelrechner.Kugelbedarf.value=(Trenner(Math.ceil(Ergebnis1)));
    document.Elevelrechner.Normal.value=(Trenner(Math.ceil(Ergebnis2)));
    document.Elevelrechner.Premium.value=(Trenner(Math.ceil(Ergebnis3)));
    document.Elevelrechner.Rabatt.value=(Trenner(Math.ceil(Ergebnis4)));
    document.Elevelrechner.PremRab.value=(Trenner(Math.ceil(Ergebnis5)));
    }
    Il refuse de calculer.
    Il me sort que des 0 et n'importe quel valeur que je rentre, ça reste 0...
    Dans PELrabbat, j’additionne tout les bonus de réduction possible.
    Dans PELaddct, je soustrait les "niveaux élites" et j'enlève les sommes de boulets que l'utilisateur a saisi.
    Dans Ergebnis1, je fait le calcul final, je divise par 100 le résultat de PELaddct que je multiplie par PELrabbat .

  18. #18
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonsoir,
    une petite erreur dans le code ligne 22
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var Munni1 = parseFloat(document.Elevelrechner.Munni1.value);
    le ; après la parenthése,
    mais à par cela, si je suis
    AlevelA est un number, because le parseFloat
    plus loin tu fais var Alevel = AlevelA.split(';');, mais que vaut un number.split() ???

    relis ce qu'à écrit Tober
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var result = "4000;1.jpg";
    var tResult = result.split(';');
    alert( tResult[0]); // 4000
    alert( tResult[1]); // 1.jpg

  19. #19
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonsoir,
    une petite erreur dans le code ligne 22
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var Munni1 = parseFloat(document.Elevelrechner.Munni1.value);
    le ; après la parenthése,
    mais à par cela, si je suis
    AlevelA est un number, because le parseFloat
    plus loin tu fais var Alevel = AlevelA.split(';');, mais que vaut un number.split() ???

    relis ce qu'à écrit Tober
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var result = "4000;1.jpg";
    var tResult = result.split(';');
    alert( tResult[0]); // 4000
    alert( tResult[1]); // 1.jpg
    Merci
    Maintenant j'ai le droit à une erreur de la part de Firebug:
    AlevelA.split is not a function

    Concernant la fin du message, oubli étant donnée que j'ai enlevé le ;1.jpg après le 4000.

    Mais si j'enlève le spliter j'ia le droit à des NaN dans toutes mes cases.

  20. #20
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    AlevelA.split is not a function
    la méthode split s'applique au string, chaine, hors AlevelA est de type number
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // recuperation de la valeur selectionnee
    var AlevelA = document.Elevelrechner.Alevel.value; // type chaine
    // recuperation d'un tableau de data
    var tAlevelA = AlevelA.split(';'); // tableau d'element de type chaine
    pour récupérer sous forme de number, c'est sur les datas du tableau qu'il faut appliquer la méthode parseFloat, qui s'applique également aux chaines.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nAlevelA = parseFloat( tAlevelA[0]); // on obtient 1 nombre

Discussions similaires

  1. Formule pour déduire des nombres pair dans une boucle
    Par Lekno dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/10/2010, 11h31
  2. Défi : Déduire des liens familiaux !
    Par Ggamer dans le forum Général Python
    Réponses: 3
    Dernier message: 12/03/2010, 15h16
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

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