Oii Victória, tudo bem?
Os problemas no seu código podem ser corrigidos fazendo algumas alterações. Vamos lá?
O elemento <p>
que contém o resultado tinha um espaço no id
("resultado"). Corrija para que coincida com o id no JavaScript.
Na função back()
, a chamada de Document
está com a letra 'D' maiúscula. Corrija para document
.
Na função insert()
, você está tentando concatenar uma variável numero
que é indefinida. Remova essa linha, pois o valor já está sendo definido na linha seguinte.
Adicione uma verificação para evitar a divisão por zero. No caso da função calcular()
, adicione um if
para garantir que a expressão não seja avaliada se o resultado estiver vazio.
O código completo com os ajustes:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calculadora</title>
<style>
* {
margin: 0;
padding: 0;
}
.fundo {
background-image: linear-gradient(45deg, black, crimson);
height: 100vh;
color: #fff;
font-family: Arial, Helvetica, sans-serif;
text-align: center;
}
.calculadora {
position: absolute;
background-color: rgba(0, 0, 0, 0.8);
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 15px;
padding: 15px;
}
.botao {
width: 50px;
height: 50px;
font-size: 25px;
cursor: pointer;
margin: 3px;
background-color: rgb(31, 31, 31);
border: none;
color: white;
}
.botao:hover {
background-color: black;
}
#resultado {
background-color: white;
width: 207px;
height: 30px;
margin: 5px;
font-size: 25px;
color: black;
text-align: right;
padding: 5px;
}
</style>
</head>
<body>
<div class="fundo">
<h1>Calculadora Básica</h1>
<div class="calculadora">
<p id="resultado"></p>
<table>
<tr>
<td><button class="botao" onclick="clean()">C</button></td>
<td><button class="botao" onclick="back('<')">
< </button>
</td>
<td><button class="botao" onclick="insert('/')">/</button></td>
<td><button class="botao" onclick="insert('*')">X</button></td>
</tr>
<tr>
<td><button class="botao" onclick="insert('7')">7</button></td>
<td><button class="botao" onclick="insert('8')">8</button></td>
<td><button class="botao" onclick="insert('9')">9</button></td>
<td><button class="botao" onclick="insert('-')">-</button></td>
</tr>
<tr>
<td><button class="botao" onclick="insert('4')">4</button></td>
<td><button class="botao" onclick="insert('5')">5</button></td>
<td><button class="botao" onclick="insert('6')">6</button></td>
<td><button class="botao" onclick="insert('+')">+</button></td>
</tr>
<tr>
<td><button class="botao" onclick="insert('1')">1</button></td>
<td><button class="botao" onclick="insert('2')">2</button></td>
<td><button class="botao" onclick="insert('3')">3</button></td>
<td rowspan="2"><button class="botao" onclick="calcular('=')" style="height: 106px;">=</button></td>
</tr>
<tr>
<td colspan="2"><button class="botao" onclick="insert('0')" style="width: 106px;">0</button></td>
<td><button class="botao" onclick="insert('.')">.</button></td>
</tr>
</table>
</div>
</div>
<script>
function insert(num) {
var resultado = document.getElementById('resultado');
resultado.innerHTML += num;
}
function clean() {
document.getElementById('resultado').innerHTML = "";
}
function back() {
var resultado = document.getElementById('resultado').innerHTML;
document.getElementById('resultado').innerHTML = resultado.substring(0, resultado.length - 1);
}
function calcular() {
var resultado = document.getElementById('resultado').innerHTML;
if (resultado) {
// Adicionando verificação para evitar a divisão por zero
if (resultado.includes('/0')) {
document.getElementById('resultado').innerHTML = "Erro: Divisão por zero!";
} else {
document.getElementById('resultado').innerHTML = eval(resultado);
}
} else {
document.getElementById('resultado').innerHTML = "Nada...";
}
}
</script>
</body>
</html>
E você também pode conferir o projeto funcionando aqui no CodePen.
Um abraço e bons estudos.