Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 23/11/2012, 16h14   #1
majedz
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Par défaut JavaScript et la multiplication

bonjour et merci pour votre coup d'oeil .
j'ai essayé de faire la multiplication par des simple codes en JSP...voici le code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<script>
function prod(){
var i=document.getElementById("fr").value;
var j=document.getElementById("sd").value;
var k=i*j;
document.getElementById("rst").innerHTML=k;
}
</script>
</head>
<body>
<p>
<input type="text" id="fr"/>x<input type="text" id="sd"/>=<input type="text" id="rst"/><br/>
<input type="button" value="produit" onclick="prod()"/>
[</p>
</body>
</html>
quand j'exécute cette page...et après avoir appuyer sur le bouton produit...la zone réservée pour l'affichage le produit reste vide....donc il y a quelque chose qui ça va pas
j'attend vos remarques....et merci d'avance.
majedz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 16h23   #2
SylvainPV
Membre expérimenté
 
Inscription : novembre 2012
Messages : 444
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 444
Points : 580
Points : 580
Bonjour,

Tout d'abord tu parles de JSP, mais il n'y en a pas dans ton code. Attention aux confusions.

Ensuite, tes input sont de type text. Ce qui signifie que tu peux rentrer des lettres et pas seulement des chiffres. La valeur que tu récupères sera donc une string et pas un int. Tu peux soit utiliser la fonction parseInt :

Code :
1
2
3
 
var i= parseInt(document.getElementById("fr").value);
var j=parseInt(document.getElementById("sd").value);
soit utiliser des <input type="number"> ; mais attention ce type n'est pas implémenté sur tous les navigateurs, donc par prudence mieux vaut rajouter le parseInt

Par ailleurs pour la suite, je t'invite à essayer la console d'erreurs Javascript (celle de chrome accessible par F12 est très bien) pour t'aider à débugger.
SylvainPV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 16h33   #3
Bovino
Responsable Développement Web

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

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

Informations forums :
Inscription : juin 2008
Messages : 18 093
Points : 64 586
Points : 64 586
Code :
document.getElementById("rst").innerHTML=k;
Un input étant une balise autofermante, elle ne possède pas de innerHTML...

@SylvainPV : si les valeurs des deux input est numérique, la multiplication effectuera elle-même le transtypage. Il n'y a que pour l'addition que ce n'est pas le cas car + est aussi l'opérateur de 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 23/11/2012, 16h53   #4
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 091
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 091
Points : 3 283
Points : 3 283
Bonjour,

Et comme ça ?

Code :
1
2
3
4
 
var i=document.getElementById("fr").value * 1;
var j=document.getElementById("sd").value * 1;
var k=i*j;
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
Pas de questions techniques en MP.
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 17h00   #5
NoSmoking
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 5 096
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 5 096
Points : 8 736
Points : 8 736
Bonjour,
Citation:
Envoyé par pc75
Et comme ça ?
relis bien la réponse de Bovino, cela n'est pas utile.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 17h01   #6
Bovino
Responsable Développement Web

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

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

Informations forums :
Inscription : juin 2008
Messages : 18 093
Points : 64 586
Points : 64 586
Aucune utilité !
Il suffit juste d'affecter le résultat à value au lieu de innerHTML
__________________
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 23/11/2012, 18h03   #7
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
Waaaarg

je suis un indécrotable
Code :
1
2
3
4
5
6
7
8
 
try {
  var i=parseInt(document.getElementById("fr").value, 10);
  var j=parseInt(document.getElementById("sd").value, 10);
  var k=i*j;
} catch (err) {
   alert('les informations fournies ne sont pas de nombres: ' + err);
}
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 18h08   #8
SylvainPV
Membre expérimenté
 
Inscription : novembre 2012
Messages : 444
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 444
Points : 580
Points : 580
Citation:
Envoyé par Bovino Voir le message
@SylvainPV : si les valeurs des deux input est numérique, la multiplication effectuera elle-même le transtypage. Il n'y a que pour l'addition que ce n'est pas le cas car + est aussi l'opérateur de concaténation.
Ah, tu viens de m'apprendre un truc ! Donc "2"*"3" === 6
C'est fascinant mais je trouve quand même ça très moche
SylvainPV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 19h56   #9
Auteur
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 5 157
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 5 157
Points : 5 604
Points : 5 604
bonjour,

outre la remarque de Bovino sur les produits en javascript :
Citation:
Envoyé par SylvainPV Voir le message
donc par prudence mieux vaut rajouter le parseInt
Citation:
Envoyé par sekaijin Voir le message
Code :
1
2
3
4
 
  var i=parseInt(document.getElementById("fr").value, 10);
  var j=parseInt(document.getElementById("sd").value, 10);
  var k=i*j;
pourquoi parseInt() ? on ne peut pas faire de multiplication avec des flottants ?
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 20h52   #10
SylvainPV
Membre expérimenté
 
Inscription : novembre 2012
Messages : 444
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 444
Points : 580
Points : 580
Citation:
Envoyé par Auteur Voir le message
pourquoi parseInt() ? on ne peut pas faire de multiplication avec des flottants ?
si bien sûr. parseFloat pour les décimaux
SylvainPV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 21h11   #11
Bovino
Responsable Développement Web

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

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

Informations forums :
Inscription : juin 2008
Messages : 18 093
Points : 64 586
Points : 64 586
Bon, ben pour les "indécrottables", l'opérateur de transtypage, c'est +, pas parseInt() ni parseFloat()

Code :
console.log(typeof +"6");
__________________
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 23/11/2012, 21h49   #12
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
Oui effectivement
parseInt et parseFloat ne sont pas des opérateur de transtypage

mais pour une saisie soit on transtype est donc cela nessecite une saisie stricte
soit on parse et on accept des petite chose

Code :
1
2
3
4
5
6
7
8
9
10
11
12
parseInt("10");
parseInt("10.33") ;
parseInt("34 45 66");
parseInt(" 60 ";
parseInt("40 years";
parseInt("He was 40";
 
parseInt("10",10);
parseInt("010");
parseInt("10",8);
parseInt("0x10");
parseInt("10",16);
Code :
1
2
3
4
5
6
7
8
9
10
11
10
10
34
60
40
NaN
10
8
8
16
16
alors que certaine de ces valeurs vont généré une erreur avec un transtypage
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 22h04   #13
Bovino
Responsable Développement Web

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

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

Informations forums :
Inscription : juin 2008
Messages : 18 093
Points : 64 586
Points : 64 586
En même temps, tu n'avais pas parlé de transtypage toi !
Je voulais juste chipoter, mais comme toujours, tes commentaires sont précis et judicieux !
__________________
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 24/11/2012, 10h19   #14
majedz
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Par défaut merci beaucoup pour vos interventions

merci à : SylvainPV,Bovino,pc75,NoSmoking,sekaijin etAuteur pour vos bonnes interventions et pour vos explications.
le problème est bien résolu en se basant sur vos analyses....le code final est comme suit :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<script>
function prod(){
var i=parseFloat(document.getElementById("fr").value);
var j=parseFloat(document.getElementById("sd").value);
var k=i*j;
document.getElementById("rst").value=k;
}
</script>
</head>
<body>
<p>
<input type="text" id="fr"/>x<input type="text" id="sd"/>=<input type="text" id="rst"/><br/>
<input type="button" value="produit" onclick="prod()"/>
</p>
</body>
</html>
et après l’exécution, le résultat était parfait.
encore merci beaucoup pour votre collaboration.
majedz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h45.


 
 
 
 
Partenaires

Hébergement Web