You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.1 KiB
79 lines
2.1 KiB
const display = document.getElementById("display");
|
|
const numbers = document.querySelectorAll(".number");
|
|
const operators = document.querySelectorAll(".operator");
|
|
const equals = document.getElementById("equals");
|
|
const clear = document.getElementById("clear");
|
|
const decimal = document.querySelector(".decimal");
|
|
|
|
let currentInput = "";
|
|
let firstOperand = null;
|
|
let operator = null;
|
|
|
|
numbers.forEach( number=> {
|
|
number.addEventListener("click", () => {
|
|
currentInput += number.textContent;
|
|
display.value = currentInput;
|
|
})
|
|
})
|
|
decimal.addEventListener("click", () => {
|
|
if(!currentInput.includes(".")) {
|
|
currentInput += ".";
|
|
display.value = currentInput;
|
|
}
|
|
})
|
|
|
|
operators.forEach(op => {
|
|
op.addEventListener("click", () => {
|
|
if(currentInput !== "") {
|
|
if(firstOperand === null){
|
|
firstOperand = parseFloat(currentInput);
|
|
} else {
|
|
calculate();
|
|
firstOperand = parseFloat(currentInput);
|
|
}
|
|
operator = op.textContent;
|
|
currentInput = "";
|
|
}
|
|
})
|
|
})
|
|
|
|
function calculate() {
|
|
const secondOperand = parseFloat(currentInput);
|
|
let result;
|
|
switch(operator) {
|
|
case "+":
|
|
result = firstOperand + secondOperand;
|
|
break;
|
|
case "-":
|
|
result = firstOperand - secondOperand;
|
|
break;
|
|
case "*":
|
|
result = firstOperand * secondOperand;
|
|
break;
|
|
case "/":
|
|
if(secondOperand == 0) {
|
|
result = "Nelze dělit nulou";
|
|
} else {
|
|
result = firstOperand / secondOperand;
|
|
}
|
|
break;
|
|
}
|
|
currentInput = result.toString();
|
|
display.value = currentInput;
|
|
}
|
|
|
|
equals.addEventListener("click", () => {
|
|
if(firstOperand !== null && operator !== null
|
|
&& currentInput !== null) {
|
|
calculate();
|
|
firstOperand = null;
|
|
operator = null;
|
|
}
|
|
})
|
|
|
|
clear.addEventListener("click", () => {
|
|
currentInput = "";
|
|
operator = null;
|
|
firstOperand = null;
|
|
display.value = "";
|
|
})
|