Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Duvida sobre o projeto de calculadora

Oi pessoal beleza?

eu estava vendo um projeto de calculadora com javascript e me deparei com um erro.

Uncaught TypeError: Cannot set properties of null (setting 'textContent') at HTMLButtonElement.inserirNumero (calculadora.js:4)

meu js
const display = document.getElementById('display');
const numeros = document.querySelectorAll('[id*=tecla]');

const inserirNumero = (evento) => display.textContent = evento.target;

numeros.forEach (numero => numero.addEventListener('click', inserirNumero));

meu html

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">

    <title>calculadora</title>
</head>
<body>
    <div class="calculadora">
        <div class="display"></div>
        <div class="calculadora-botao">
            <button id="limpaDisplay">CE</button>
            <button id="limparCalculo">C</button>
            <button id="backspace">«</button>
            <button id="operadorDivisao">/</button>
            <button id="tecla7">7</button>
            <button id="tecla8">8</button>
            <button id="tecla9">9</button>
            <button id="operadorMultiplicacao">*</button>
            <button id="tecla4">4</button>
            <button id="tecla5">5</button>
            <button id="tecla6">6</button>
            <button id="operadorSubtracao">-</button>
            <button id="tecla1">1</button>
            <button id="tecla2">2</button>
            <button id="tecla3">3</button>
            <button id="operadorAdicao">+</button>
            <button id="inverter">±</button>
            <button id="tecla0">0</button>
            <button id="decimal"">,</button>
            <button id="resultado">=</button>
        </div>
    </div>

    <script src="calculadora.js"></script>


</body>
</html>

Eu não estou conseguindo entender o porque desse erro.

6 respostas
solução!

Oi Bruno, tudo bem?

Pelo que eu vejo, no Javascript, você faz da seguinte forma:

const display = document.getElementById('display');

Porém, no seu HTML, a div não possui um ID display, e sim uma classe. Então, o ideal seria você mudar esse class para id, ou usar um seletor de classes, como:

const display = document.querySelector('.display');

Espero ter ajudado, bons estudos =)

Oi Giovanna,

Nossa valeu pela dica deu super certo,

porem no exemplo ele usa o const display = document.getElementById('display'); e acaba dando certo, mesmo usando uma classe na div do display,

Saberia me dizer porque, mas mesmo assim muito obrigado pela dica.

Oi Bruno!

Pode me mandar o link aqui da aula em questão? O tópico está aberto só como "Javascript", então não consigo ver a que curso/aula está se referindo.

Abraços!

Foi uma aula pelo youtube que vi.

https://www.youtube.com/watch?v=oRZQ5EZOrQk&list=PL5CrFZA3prfKEoy8uE6d6k6WeSISeRKuo&index=4&t=459s em 11 minutos +-, ele usa esse comando.

Oi Bruno!

Vi aqui no HTML dele que está dessa forma (minuto 3:42):

<div class="display" id="display"></div>

Por isso que o document.getElementById() funcionou da maneira correta.

Espero ter ajudado, bons estudos =)

Nossa me salvou muito Giovanna, valeu mesmo.