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

Tela negociações não inclui valores

Boa tarde, quando eu atualizo a página ou insiro as informações e clico em incluir, a página recarrega, mas não salvas as informações.

no "console.log" aparece a seguinte mensagem: Uncaught TypeError: Cannot read property 'addEventListener' of null


Segue abaixo o código JS

var campos = [

    document.querySelector('#data'),
    document.querySelector('#quantidade'),
    document.querySelector('#valor')

];

console.log(campos);

var tbody = document.querySelector('table tbody');

document.querySelector('.form').addEventListener('submit', function(event) {


    event.preventDefault();

    var tr = document.createElement('tr');

    campos.forEach(function(campo) {

        var td = document.createElement('td');
        td.textContent = campo.value;
        tr.appendChild(td);
});




var tdVolume = document.createElement('td');
tdVolume.textContent = campos[1].value * campos[2].value;

tr.appendChild(tdVolume);
tbody.appendChild(tr);

campos[0] = '';
campos[1] = 1;
campos[2] = 0;


campos[0].focus();



});
9 respostas

Oi Igor, tudo certo?

O console retorna esse erro pois não achou o elemento lá no DOM (lá no HTML).

Dá uma conferida no nome dos IDs, classes e tags que você está tentando manipular com seu código e ver se bate.

Você pode usar o proprio console.log() pra te ajudar nisso também.

Espero ter ajudado,

Abcs!

Igor, tenta quebrar a cabeça e achar o problema. O Natan já deu a cola. Esse capítulo é o prólogo do curso e quem tem os pré-requisitos deveria passar sem problema. Faz uma forcinha e tenta descobrir o erro.

Aliás, a ideia do curso é não se tornar ninja, mas cangaceiro em JavaScript!

Nossa, vocês são demais mesmo!

Vou continuar tentando aqui, valeu!

Parabéns pelas Aulas Flávio, são excelentes!

Se não descobrir até amanhã a noite nos avise para darmos uma ajudinha.

E ai Igor? Achou o problema do seu código já? Se não achou eu entro em ação.

Da uma olha ness linha

document.querySelector('.form').addEventListener('submit', ...)

Existe a classe form na tag formulário? Se não tiver, o querySelector não encontrará o elemento na página e não poderá fazer o addEventListener porque o elemento é null.

Bom dia Flávio,

Ainda não encontrei o erro, sim existe a classe 'form' no formulário, segue HTML abaixo:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Negociações</title>
    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="css/bootstrap-theme.css">
    <script src="index.js"></script>

</head>
<body class="container">

    <h1 class="text-center">Negociações</h1>

    <form class="form">

        <div class="form-group">
            <label for="data">Data</label>
            <input type="date" id="data" class="form-control" required autofocus/>        
        </div>    

        <div class="form-group">
            <label for="quantidade">Quantidade</label>
            <input type="number" min="1" step="1" id="quantidade" class="form-control" value="1" required/>
        </div>

        <div class="form-group">
            <label for="valor">Valor</label>
            <input id="valor" type="number" class="form-control"  min="0.01" step="0.01" value="0.0" required />
        </div>

        <button class="btn btn-primary" type="submit">Incluir</button>
    </form>

    <div class="text-center">
        <button class="btn btn-primary text-center" type="button">
            Importar Negociações
        </button>
        <button class="btn btn-primary text-center" type="button">
            Apagar
        </button>
    </div> 
    <br>
    <br>

    <table class="table table-hover table-bordered">
        <thead>
            <tr>
                <th>DATA</th>
                <th>QUANTIDADE</th>
                <th>VALOR</th>
                <th>VOLUME</th>
            </tr>
        </thead>

        <tbody>
        </tbody>

        <tfoot>
        </tfoot>
    </table>

</body>
</html>
solução!

Ahhhhhhhhh você carregou o script no head da página! Ele tem que ficar antes de fechar a tag body!

Poxa não sabia disso Flávio, sempre carreguei meus CSS's por exemplo no head, eaí pensei que o SCRIPT tb era carregado no top.

Abraços.