Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/10/2011, 17h06   #1
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
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 :
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
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 19h35   #2
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
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
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 08h17   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/10/2011, 08h26   #4
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
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
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h14   #5
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Merci pour vos réponses,
Voici comment ça se passe au niveau du HTML:

Code html :
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...
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h22   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
Pas dans le code HTML
Dans cette partie-là :
Code :
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h27   #7
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Je ne peut pas mettre ça,

Code :
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...
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h38   #8
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
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 :
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h52   #9
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1

Je ne savais pas que le'on pouvait faire ainsi
Mais maintenant il ne veut plus marcher ce script
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h53   #10
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
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
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h58   #11
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Voici ce que me sort Firebug:
AlevelA.split is not a function

Code :
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;
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 20h15   #12
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

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

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
ça change quelque chose si tu mets : ???

AlevelA.split(';');
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 20h19   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 20h20   #14
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
J'ai donc fait quelques recherches, j'ai conclu ceci:
Code :
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:

Citation:
Cannot read property '0' of undefined
calcMapElitbet29
(anonymous function)
onclick
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 13h23   #15
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Le problème c'est que je suis obligé de mettre ce ';' parce que :

Code html :
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>
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 14h50   #16
Membre Expert
 
Avatar de Tober
 
Homme Thomas
Ingénieur développement logiciels
Inscription : juillet 2007
Messages : 741
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : Luxembourg

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

Informations forums :
Inscription : juillet 2007
Messages : 741
Points : 1 000
Points : 1 000
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...
Tober est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 20h01   #17
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
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 :
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 .
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 20h29   #18
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 779
Points : 4 779
Bonsoir,
une petite erreur dans le code ligne 22
Code :
 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 :
1
2
3
4
var result = "4000;1.jpg";
var tResult = result.split(';');
alert( tResult[0]); // 4000
alert( tResult[1]); // 1.jpg
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 20h49   #19
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Citation:
Envoyé par NoSmoking Voir le message
Bonsoir,
une petite erreur dans le code ligne 22
Code :
 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 :
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.
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 22h03   #20
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 779
Points : 4 779
Citation:
AlevelA.split is not a function
la méthode split s'applique au string, chaine, hors AlevelA est de type number
Code :
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 :
var nAlevelA = parseFloat( tAlevelA[0]); // on obtient 1 nombre
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h48.


 
 
 
 
Partenaires

Hébergement Web