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

Código com jquery

Estou tentando fazer o código da aula 1, vídeo 2 do javascript avançado 1, com jquery, mas não estou conseguindo.

Esse é o código da aula:

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

});

Esse é o meu código:

var formulario = $(".form");
var tbody = $("table tbody");
var campos = [];

 $(function() {
    adicionaCampos();
});

function adicionaCampos(){
    formulario.submit(function(event) {        
        event.preventDefault();
        var tr = $("<tr>");
        var data = $("#data").val();
        var quantidade = $("#quantidade").val();
        var valor = $("#valor").val();
        var tdVolume = $("<td>");
        tdVolume.text(quantidade * valor);
        campos.push(data, quantidade, valor, tdVolume);
        $(campos).each(function(a) {
            var td = $('<td>');
            td.text(campos[a]);        
            tr.append(td);  
        });
    tr.append(tdVolume);
    tbody.append(tr);
    });
}

O que está errado? Como fazer uma versão melhor desse código?

Quando eu adiciono os valores na tabela seguidamente, uma hora a tabela começa a comprimir os títulos e expandir os valores pro lado ao invés de colocar os valores um embaixo do outro.

Além disso, a função está criando um objeto e colocando antes do volume!

11 respostas

Fala ai André, tudo bem? Você consegue compartilhar o projeto completo? Assim fica mais fácil simular o problema e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

Matheus, tudo bom?

Esse daqui é o código do projeto da aula!

https://github.com/alura-cursos/javascript-avancado-i/archive/aula2.zip

Muito obrigado!

Fala André, testei o projeto e aqui não deu problema nenhum.

Conforme fui adicionando várias registros da tabela, o tamanho (altura) da página foi aumentando e através do scroll é possível ver o conteúdo da tabela completa (comportamento esperado).

Espero ter ajudado.

Sim, o código está funcionando, mas a minha dúvida é sobre como desempenhar as mesmas funções, só que usando jquery. Usando jquery, cheguei até a parte que postei anteriormente.

Certo, sendo assim, me manda o projeto seu com jQuery para eu ver como está, assim consigo ver o que está acontecendo e te guiar para uma possível solução.

Fico no aguardo.

Opa, tudo bom?

Certo, obrigado!

https://github.com/andreichiro/alura

Fala André, não consegui extrair o conteudo do seu .zipx, consegue mudar para apenas .zip? Uso mac e ele tem umas frescuras.

Espero ter ajudado.

Ok, fiz o upload .zip!

solução!

Fala André, dei uma olhada no projeto e fiz algumas alterações no main.js, ele ficou assim:

var formulario = $(".form");
var tbody = $("table tbody");

$(document).ready(() => {
    adicionaCampos();
})

function adicionaCampos() {
    formulario.submit(function(event) {
        event.preventDefault();
        var data = $("#data").val();
        var quantidade = $("#quantidade").val();
        var valor = $("#valor").val();
        var volume = quantidade * valor;
        var negociacao = {
            data,
            quantidade,
            valor,
            volume,
        };

        tbody.append(`
            <tr>
                <td>${negociacao.data}</td>
                <td>${negociacao.quantidade}</td>
                <td>${negociacao.valor}</td>
                <td>${negociacao.volume}</td>
            </tr>
        `);
    });
}

Acho que isso deve resolver seus problemas (pelo menos aqui deu certo).

Espero ter ajudado.

Matheus, deu certo. Obrigado!

Magina Andre, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.