Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Ultimo exercício, modulo 5, JQuery II

Oi pessoal, Então, mesmo mudando pra classe e usando carrinhos.each, a tabela de vitoria fica com os valores de preço e numero de produtos igual a zero. Já revirei o codigo e não acho aonde está errado. :/

var atualizaDados = function(){
            var carrinhos = $(".carrinho");
            carrinhos.each(function(){
                var carrinho = $(this);
                var items = carrinho.find(".item-total:visible");
                var total = 0;
                for(var i=0; i < items.length; i++) {
                        var conteudo = $(items[i]).text();
                         var preco = parseFloat(conteudo);
                       total += preco;
                }
                carrinho.find(".valor-total").text(total);
                carrinho.find(".quantidade-de-itens").text(items.length);
            });

};
atualizaDados();
var removeItem = function(event){
    event.preventDefault(); 
    $(this).closest("tr").hide();            
    var atual = parseInt($(".quantidade-de-itens").text()); 
    var novaQuantidade = atual - 1; 
    $(".quantidade-de-itens").text(novaQuantidade);             
    var precoAtual = parseFloat($('.valor-total').text());
    var preco = parseFloat($(this).closest("tr").find(".item-total").text());
    var precoFinal = precoAtual - preco;
    $('.valor-total').text(precoFinal);
};
$('.remove-item').click(removeItem);
var undo = function(){
            var trs = $("tr:hidden");
            $("tr:visible").removeClass("recuperado");
            trs.addClass("recuperado");
            trs.show();
            atualizaDados()
};
$(".undo").click(undo);
<html>
<head>
    <link rel="stylesheet" type="text/css" href="carrinho.css">
</head>
<body>
    <div class="carrinho">
        <h2>Carrinho entrega em Sao Paulo</h2>
        <table>
            <thead>
                <tr>
                    <td></td>
                    <td>Nome</td>
                    <td>Quantidade</td>
                    <td>Valor</td>
                    <td>Total</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><img src="imagens/tablet.jpg"></td>
                    <td>Tablet miPad 18</td>
                    <td>1</td>
                    <td>499.99</td>
                    <td class="item-total">499.99</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/telefone.png"></td>
                    <td>Telefone miPhone 18</td>
                    <td>2</td>
                    <td>199.99</td>
                    <td class="item-total">399.98</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/sapato.jpg"></td>
                    <td>Sapato</td>
                    <td>1</td>
                    <td>99.99</td>
                    <td class="item-total">99.99</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/monitor.jpg"></td>
                    <td>Monitor Sam 21</td>
                    <td>1</td>
                    <td>299.00</td>
                    <td class="item-total">299.00</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/teclado.jpg"></td>
                    <td>Teclado com fio preto </td>
                    <td>1</td>
                    <td>100.00</td>
                    <td class="item-total">100.00</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/mouse.jpg"></td>
                    <td>Mouse wireless</td>
                    <td>1</td>
                    <td>199.00</td>
                    <td class="item-total">199.00</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
                <tr>
                    <td><img src="imagens/camiseta.jpg"></td>
                    <td>Camiseta G</td>
                    <td>1</td>
                    <td>25.00</td>
                    <td class="item-total">25.00</td>
                    <td><a class="remove-item" href="">(Remover)</td>
                </tr>
            </tbody>
        </table>
         <div>
             Valor total do carrinho:
             <span class="valor-total"></span>
             <br/>
             Quantidade de itens distintos:
             <span class="quantidade-de-itens"></span>
         </div>
    </div>
    <div>
        <input type="button" value="Undo" class="undo">
    </div>
    <div class="carrinho">
        <h2>Carrinho entrega em Vitoria</h2>
        <table>
            <thead>
                <tr>
                    <td></td>
                    <td>Nome</td>
                    <td>Quantidade</td>
                    <td>Valor</td>
                    <td>Total</td>
                    <td></td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><img src="imagens/camiseta.jpg"></td>
                    <td>Camiseta G</td>
                    <td>1</td>
                    <td>25.00</td>
                    <td class="item-total">25.00</td>
                    <td><a class="remove-item" href="">(remover)</a></td>
                </tr>
            </tbody>
        </table>

    </div>
    <div>
        <input type="button" value="Undo" class="undo">
    </div>

    <div>
        Valor total: <span class="valor-total">0</span>
        <br/>
        Quantidade de itens: <span class="quantidade-de-itens">0</span>
    </div>    

    <script src="jquery-2.0.3.min.js"></script>
    <script src="carrinho.js"></script>

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

O problema está que a sua div com a class carrinho de vitória está fechando antes da div do valor total, então quando você usa os comandos:

                carrinho.find(".valor-total").text(total);
                carrinho.find(".quantidade-de-itens").text(items.length);

o java script não encontra essas classes, pois elas estão fora do escopo do CARRINHO.

Espero ter ajudado, abraço.