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

tdVolume em diante não funciona.

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();

Meu código não adiciona a última linha (tdVolume) na tabela, e todo o resto não funciona. Após a primeira linha ser adicionada, sempre que tento adicionar outra recebo um erro em " td.textContent = campo.value;". Não consigo encontrar o erro.

7 respostas

Marcus, blz?

Não há só esse problema no seu código, há outras inconsistências, por exemplo a instrução campos[0] = focus();.

Para que todas possam ser apontadas é necessário que você poste seu código completo, sem omitir nada, inclusive o início que esta faltando.

var campos = [
    document.querySelector('#data'),
    document.querySelector('#quantidade'),
    document.querySelector('#valor')
];

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();

});

Oi Marcus.

Cole a mensagem de erro completa. Já adianto que há erros de digitação. Por exemplo:

campos[0] = focus();

O correto é

campos[0].focus();

Vi que ainda não corrigiu. Aliás esse código é o mesmo que você aprende no curso pré-requisito deste curso. Sinta-se à vontade para revisar a aula sempre que desejar.

Corrija e verifique o programa, pois do jeito que está resultará em um erro. Aliás, é bem provável que ele seja a causa.

Corrigi a parte do focus(), agora o erro anterior não acontece mais, dessa vez ele adiciona vários NaN depois da primeira linha.

Novo Erro: Uncaught TypeError: campos[0].focus is not a function at HTMLFormElement. (index.js:28)

Cole seu html completo. Inclusive seu index.js criado. Lembra do NaN do curso anterior ao avançado? Então deixa eu ver seu html.

solução!

Veja que você omitiu muita coisa no seu codigo. São elementos os itens do array. Você cometeu um erro de lógica apagando o item do array antes de acessa-lo.

Veja o trecho correto

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

Olha como você fez

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

Isso resolve o problema.

Exato, meu erro foi esquecer os ".value" antes de atribuir o valor. Muito obrigado! Agora está funcionando normal!