Bonjour, je viens de commencer le web et je n'arrive pas à realiser le programme de l'image ci-dessous. Voici mon programme il ne fais absolument rien juste de click. Je voudrais savoir ou est le probleme ?
// Variables to track active operand and selected operation
let activeOperand = "operand1";
let selectedOperation = null;
// DOM elements
const operand1El = document.querySelector("#operand1");
const operand2El = document.querySelector("#operand2");
const resultEl = document.querySelector("#result");
// Set the active operand
function setActiveOperand(operand) {
activeOperand = operand;
}
// Append number to the active operand
function appendNumber(number, operand) {
const operandEl = document.querySelector(`#${operand}`);
if(operandEl.value === "0") {
operandEl.value = number;
} else {
operandEl.value += number;
}
}
// Delete the last character from the active operand
function deleteLastCharacter(operand) {
const operandEl = document.querySelector(`#${operand}`);
operandEl.value = operandEl.value.slice(0, -1);
if(operandEl.value === "") {
operandEl.value = "0";
}
}
// Clear the active operand
function clearOperand(operand) {
document.querySelector(`#${operand}`).value = "0";
}
// Set the selected operation
function setOperation(operation) {
selectedOperation = operation;
}
// Update the result based on the selected operation
function updateOutput() {
const operand1 = parseFloat(operand1El.value);
const operand2 = parseFloat(operand2El.value);
let result;
switch(selectedOperation) {
case "add":
result = operand1 + operand2;
break;
case "subtract":
result = operand1 - operand2;
break;
case "multiply":
result = operand1 * operand2;
break;
case "divide":
result = operand2 !== 0 ? operand1 / operand2 : "Infinity";
break;
default:
result = "Error";
}
resultEl.value = result;
}
// Save operands to localStorage
function saveOperands() {
localStorage.setItem("operand1", operand1El.value);
localStorage.setItem("operand2", operand2El.value);
}
// Restore operands from localStorage
function restoreOperands() {
const savedOperand1 = localStorage.getItem("operand1");
const savedOperand2 = localStorage.getItem("operand2");
if(savedOperand1 !== null) operand1El.value = savedOperand1;
if(savedOperand2 !== null) operand2El.value = savedOperand2;
}
Le principal soucis vient du fait que tu as englobé boutons d'une balise form . Quand on appuie sur un boutton présent dans une balise form il a pour action par défaut de valider le formulaire donc ta page se recharger, pour corriger ça le plus simple et logique à faire est de ne pas utiliser une balise form (tu n'en as aucune utilité ici) ou utiliser un preventDefault() sur l'évenement submit du formulaire (si tu débutes ce n'est pas la peine) ou définir les boutons comme ayant un role de bouton en mettant
<button type="button">Del</button>
Ensuite dans ton fichier javascript tu récupères élements qui sont dans ton document html, sauf que si le fichier est chargé avant que ces élements de ton document ne soient chargé eux, tu ne sélectionnes rien donc dans ce cas prend l'habitude de soit
mettre ta balise script en bas à la fin de ton body
soit ajouter sur ton script src defer
<script src="..." defer></script>
soit
englober ton code javascript de l'évenement qui attend le chargement
window.addEventListener("load",function(){
});
Après avoir fait ces changements de mon coté en appuyant sur un nombre il s'affiche bien dans la barre Je pense que tu peux tenter d'apporter tes corrections de ton côté maintenant
Ps:
les bouttons html peuvent être crée en javascript pour ne pas avoir à re écrire 10 fois la même ligne
- Edité par GENESIS_LORD 8 octobre 2023 à 18:39:34
calculatrice(html ,avasript css
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
yasakani no magatama