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

Valores totais e quantidades e propaganda não estão sendo mostradas

Estava tudo certo, funcionando normalmente, até passar o exercício pra fazer a propaganda. Não achei o erro no código, poderiam me ajudar? Eu até copiei e colei as funções que estavam no texto exemplo e mesmo assim nao funcionou.

var umaPropaganda = function(){
    var propagandas = ["O que acha de comprar uma motocicleta?",
               "O que acha de comprar uma lancha?",
               "O que acha de comprar uma bicicleta?",
               "O que acha de comprar uma carro?"
               ];

    var posicao = Math.floor(propagandas.length *Math.random());
    var texto = propagandas[posicao];
    var tr =$("<tr>").addClass("propaganda").append($("<td>"));
    tr.find("td").attr("colspan", 6).text(texto);
    return tr;
}

var atualizaDados = function () {
    var carrinhos = $('.carrinho');
    carrinhos.each(function() {
        var carrinho = $(this);
        var itens = carrinho.find('.item-total:visible');
        var total = 0;
        for (var i = 0; i < itens.length; i++) {
            var item = $(itens[i]);
            var valor = parseFloat(item.text());
            total = total + valor;
        }
    console.log("Valor total: " + total);
    carrinho.find('.valor-total').text(total);
    carrinho.find('.quantidade-item').text(itens.length);
    });
};
var removeItem = function(event) {

    event.preventDefault();
    var self = $(this);
    self.closest('tr').hide();

    atualizaDados();
};
var undo = function () {
    var carrinho = $(this).closest('.carrinho'); 
    carrinho.find("tr:visible").removeClass('recuperado');

    var trs = carrinho.find('tr:hidden');
    trs.addClass('recuperado').show();
    atualizaDados();

};
var aposInicializado = function() {
    atualizaDados();
    $('.undo').click(undo);
    $('.remove-item').click(removeItem);
    $(".carrinho").each(function() {
    $(this).find("tr:nth-child(3n), tr:last").each(function(){
            umaPropaganda().insertAfter($(this));
        });
});


$(aposInicializado);
6 respostas

Poderia especificar o erro por favor?

A única coisa que eu vi de diferente aqui é o nome da class na função atualizaDados.

carrinho.find('.quantidade-item').text(itens.length);
carrinho.find('.quantidade-de-itens').text(itens.length);
carrinho.js:59 Uncaught SyntaxError: Unexpected end of input

Na função aposInicializado está faltando fechar a chave principal.

var aposInicializado = function() {
    atualizaDados();
    $('.undo').click(undo);
    $('.remove-item').click(removeItem);
    $(".carrinho").each(function() {
        $(this).find("tr:nth-child(3n), tr:last").each(function(){
            umaPropaganda().insertAfter($(this));
        });
    });
}; // AQUI

Continua não mostrando os valores, qtd, e propaganda e com o mesmo erro de syntax

solução!

Ah, achei o "erro". A função umaPropaganda que foi passada no texto explicado, está um pouco diferente da do vídeo, testei a do texto e funcionou.

O que tinha de problema?