Après quelques mois de pause, je me suis remis à la programmation, notamment la gestion des évènements et javascript sur du HTML. Juste pour pratiquer, j'ai décidé de me créer une calculatrice. Le problème ... est qu'elle ne marche pas. Si je laisse mon code (JS notamment) pourrais avoir du feedback sur les erreurs que j'ai pu commettre ? Merci d'avance.
// On va appliquer une gestion des évènements pour chaque bouton
// Methode 1 : on a déjà l'évènement dans le html, à proscrire sinon
// 1. Fonction addition
function Additionne() {
// deux variables input et une variable résultat
let input1 = "";
let input2 = "";
let resultat = "";
// on attache les variables à des éléments du HTML
input1 = document.getElementById('input1').value;
input2 = document.getElementById("input2").value;
// et enfin le calcul
resultat = input1 + input2;
// On affiche
console.log("addition !");
console.log(resultat);
document.getElementsByClassName("resultat").innerHTML = `${input1} + ${input2} = ${resultat} <br>`;
}
// 2. Fonction soustraction
function Soustract() {
// deux variables input et une variable résultat
let input1 = "";
let input2 = "";
let resultat = "";
// on attache les variables à des éléments du HTML
document.getElementById("input1").value = input1;
document.getElementById("input2").value = input2;
// et enfin le calcul
resultat = input1 - input2;
// On affiche
console.log("soustraction !");
console.log(input1-input2);
document.getElementsByClassName("resultat").innerHTML = `${input1} - ${input2} = ${resultat} <br>`;
}
// 3. Fonction multiplication
function Multiply() {
// deux variables input et une variable résultat
let input1 = "";
let input2 = "";
let resultat = "";
// on attache les variables à des éléments du HTML
document.getElementById("input1").value = input1;
document.getElementById("input2").value = input2;
// et enfin le calcul
resultat = input1 * input2;
// On affiche
console.log("multiplication !");
console.log(input1*input2);
document.getElementsByClassName("resultat").innerHTML = `${input1} x ${input2} = ${resultat} <br>`;
}
// 4. Fonction division
function Divide() {
// deux variables input et une variable résultat
let input1 = "";
let input2 = "";
let resultat = "";
// on attache les variables à des éléments du HTML
document.getElementById("input1").value = input1;
document.getElementById("input2").value = input2;
// et enfin le calcul
resultat = input1 / input2;
// On affiche
console.log("Division !");
console.log(resultat);
document.getElementsByClassName("resultat").innerHTML = `${input1} / ${input2} = ${resultat} <br>`;
}
//PB : Les opérations ne semblent pas se faire, j'ai limpression que le programme
// ne reconnait pas les valeurs saisies dans les zones input
// Comme des éléments à calculer
// vérification faite avec console log
Code CSS
/* on va centrer le texte sur toute la page*/
body {
text-align: center
}
/* souligner le titre */
h2 {
text-decoration: underline
}
/* On va appliquer display flex sur tout les row */
.row {
display: flex;
flex-direction: row;
border : solid black;
}
p {
border : dotted red;
}
/* on va aussi appliquer display flex sur le container */
.container {
display:flex;
}
.row {
width : 50%
}
Tu veux faire des opérations sur des chaines de caractères, alors pour les division, soustraction et multiplication ça marche mais pas sur l'addition (Il concatène à la place d'additionener)
Tu as une erreur dans ta console ?
D'un seul Homme il vaut mieux se méfier, à deux ils ont pu comploter, trois est le chiffre auquel on peux se fier
Il y a pas mal de choses à dire sur ton code Javascript.
Dans un premier temps quand tu veux assigner une valeur que tu récupère du DOM dans une variable, il faut toujours faire "variable = DOM" comme pour n'importe quel assignation à une variable en fait (tu l'avais fait correctement pour l'addition).
Je ne comprends pas l'instruction "let", je n'ai jamais vu ça ; Pour déclarer une variable en JS, c'est l'instruction "var".
Ensuite pour ce qui est de l'addition, tu devais convertir tes variables en INT car le "+" sert aussi à concaténer et comme l'élément récupéré est un String, il pense devoir concaténer des String (5 +5 = 55).
De plus, l'élément dans lequel tu veux afficher le résultat étant défini par une class, il faut effectivement utiliser la fonction "getElementsByClassName" mais comme son nom l'indique (il y a un "s" à Elements), il te renvois un tableau de tous les éléments ayant ce nom de class, tu dois donc prendre l'élément d'index [0].
Pour terminer, je pense que tu as utiliser une autre syntaxe qui n'existe pas en JS pour construire la chaine de résultat, j'ai changé ça par une concaténation.
CODE FINAL :
// On va appliquer une gestion des évènements pour chaque bouton
// Methode 1 : on a déjà l'évènement dans le html, à proscrire sinon
// 1. Fonction addition
function Additionne() {
// deux variables input et une variable résultat
var input1 = "";
var input2 = "";
var resultat = "";
// on attache les variables à des éléments du HTML
input1 = document.getElementById("input1").value;
input2 = document.getElementById("input2").value;
// et enfin le calcul
resultat = parseInt(input1) + parseInt(input2);
// On affiche
console.log("addition !");
console.log(resultat);
document.getElementsByClassName("resultat")[0].innerHTML = input1+' + '+input2+' = '+resultat+' <br>';
}
// 2. Fonction soustraction
function Soustract() {
// deux variables input et une variable résultat
var input1 = "";
var input2 = "";
var resultat = "";
// on attache les variables à des éléments du HTML
input1 = document.getElementById("input1").value;
input2 = document.getElementById("input2").value;
// et enfin le calcul
resultat = input1 - input2;
// On affiche
console.log("soustraction !");
console.log(resultat);
document.getElementsByClassName("resultat")[0].innerHTML = input1+' - '+input2+' = '+resultat+' <br>';
}
// 3. Fonction multiplication
function Multiply() {
// deux variables input et une variable résultat
var input1 = "";
var input2 = "";
var resultat = "";
// on attache les variables à des éléments du HTML
input1 = document.getElementById("input1").value;
input2 = document.getElementById("input2").value;
// et enfin le calcul
resultat = input1 * input2;
// On affiche
console.log("multiplication !");
console.log(resultat);
document.getElementsByClassName("resultat")[0].innerHTML = input1+' * '+input2+' = '+resultat+' <br>';
}
// 4. Fonction division
function Divide() {
// deux variables input et une variable résultat
var input1 = "";
var input2 = "";
var resultat = "";
// on attache les variables à des éléments du HTML
input1 = document.getElementById("input1").value;
input2 = document.getElementById("input2").value;
// et enfin le calcul
resultat = input1 / input2;
// On affiche
console.log("division !");
console.log(resultat);
document.getElementsByClassName("resultat")[0].innerHTML = input1+' / '+input2+' = '+resultat+' <br>';
}
//PB : Les opérations ne semblent pas se faire, j'ai limpression que le programme
// ne reconnait pas les valeurs saisies dans les zones input
// Comme des éléments à calculer
// vérification faite avec console log
Avec babeljs on peut très bien faire la conversion sur certains élément après le mieux c'est que les gens on les force un peu à changer et à ce mettre à jour
https://goo.gl/wXgwvv (Site babeljs.io avec un exemple de code et sa traduction en es5)
Cette calculatrice n’additionne que des entiers ? Un Number cserait préférable à un parseInt ou parseFloat ! mais, en toute hypothèse, un signe plus devant serait suffisant :
// On va appliquer une gestion des évènements pour chaque bouton
// Methode 1 : on a déjà l'évènement dans le html, à proscrire sinon
// 1. on va créer deux variables liées aux zones de saisie input
const input1 = document.querySelector("#input1");
const input2 = document.querySelector("#input2");
// 2. Ensuite on transforme ces chaines de caractères saisies en entier avec parseInt
const a = parseInt(input1.value); // Attention le value aussi est mis entre parenthèses car c'est ce qui est transformé
const b = parseInt(input2.value);
//Les variables a et b vont servir aux calculs
// 3. fonction Additionne
function Additionne () {
// on crée une variable retournée qui va détailler le calcul
const calcul = a + b;
console.log("Addition!");
document.querySelector(".resultat").innerHTML += `Résultat : ${calcul} <br>`;
return calcul;
}
// On fait la même chose pour les autres fonctions
// 4. function Soustract
function Soustract () {
const calcul = a-b;
console.log("Soustraction!");
document.querySelector(".resultat").innerHTML += `Résultat : ${calcul}<br>`;
return calcul;
}
// 5. Fonction division
function Divide () {
const calcul = a / b;
console.log("Division !");
document.getElementsByClassName("resultat").innerHTML += `Résultat : ${calcul}<br>`;
return calcul;
}
// fontion multiplication
function Multiply() {
const calcul = a * b;
console.log("Multiplication !");
document.querySelector(".resultat").innerHTML += `Résultat : ${calcul}<br>`;
return calcul;
}
Code CSS
/* on va centrer le texte sur toute la page*/
body {
text-align: center
}
/* souligner le titre */
h2 {
text-decoration: underline
}
/* On va appliquer display flex sur tout les row */
.row {
display: flex;
flex-direction: row;
border : solid black;
}
p {
border : dotted red;
}
/* on va aussi appliquer display flex sur le container */
.container {
display:flex;
}
.row {
width : 50%
}
- Edité par KyssamaJeanMartin 22 février 2018 à 23:22:55
Je dirais juste que les méthodes Additionne, Soustract (Soustrait en français xd) etc ne devrais pas mettre le résultat dans l'HTML. Ce n'est pas son but. Regarde mon jsfiddle pour comparer
D'un seul Homme il vaut mieux se méfier, à deux ils ont pu comploter, trois est le chiffre auquel on peux se fier
World of Potion | Discord 3D [FR] | Direct Quiz
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
World of Potion | Discord 3D [FR] | Direct Quiz
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL