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

Não trás quantidade de items

Bom dia,

Estou tentando trazer a quantidade de Itens, mas não consigo, o navegador me informa "archive.js:11 Uncaught TypeError: Cannot read property '0' of undefined".

Segue o código:

var items = $('.item-total');
var total = 0;


for(i = 0; i < items.length; i++) {


    var item = $(items[i]).text();
    var valor = parseFloat(item);
    total = total + valor;
    var TextoQuantidade  = $(quantidade[i]).text();
    var quantidade = parseFloat(TextoQuantidade);

    itens += quantidade;


    $('#valor-total').text(total);
    $('#quantidade-de-itens').text(quantidade);



}

Me surgiu outra dúvida também. Não ficou muito claro pra mim, se após o 'calculo do total de valores', é realizado um novo calculo para 'quantidade de itens' ou se é tudo realizado no mesmo laço, ou seja, tudo no mesmo 'FOR'. Tanto é que acabei misturando o código do exercício anterior com este, acreditando que fosse mesmo isso à ser feito. Notei também em um outro tópico de dúvidas a dúvida do Sr. Fabiano, com última atualização à 3 semanas atrás, no qual aparentemente o código de resposta possui um erro, o mesmo ainda persiste?

Cordialmente, Igor Federizi

4 respostas
solução!

Bom dia Igor, 1. Não é necessário obter a quantidade de itens dentro da blucle for. 2. Otimização de código: atribuir valores para os id #valor-total, #quantidade-de-itens devem ser realizados fora do loop.

O código seria:

        var items = $('.item-total');
        var total = 0;
        var quantidade = items.length;

        for(i = 0; i < items.length; i++) {
            var item = $(items[i]).text();
            var valor = parseFloat(item);
            total = total + valor;
            /*
            var TextoQuantidade  = $(quantidade[i]).text();
            var quantidade = parseFloat(TextoQuantidade);

            itens += quantidade;
            */
        }
        $('#valor-total').text(total);
        $('#quantidade-de-itens').text(quantidade);

Obrigado Gustavo

Bem eu tive problema nesse exercicio tbm, nao consegui implementar este codigo Gustavo... :( nao devo ter pegado a "manha " do negoço..

Consegui fazer funcionar assim, mas temo estar usando coisas desnecessarias

var calculoItens = function(){
                var itens = $(".item-total");
                var quantidadeTotalDeItens = $(".quantidade-itens-comprados");
                var total = 0;
                var qtdTotal = 0;

                for(var i=0; i < itens.length; i++) {
                    var textoConteudo = $(itens[i]).text();
                    var preco = parseFloat(textoConteudo);
                    total += preco;
                    var textoQuantidade = $(quantidadeTotalDeItens[i]).text();
                    var quantidade = parseFloat(textoQuantidade);
                    qtdTotal += quantidade; 
                }
                $("#valor-total").text(total);
                $("#quantidade-de-itens").text(qtdTotal);
        }

        $(calculoItens);

Boa Tarde Renan, 1. Não é necessário obter a quantidade de itens dentro da blucle for.

O código seria:

               var calculoItens = function(){
                var itens = $(".item-total");
                var quantidadeTotalDeItens = $(".quantidade-itens-comprados");
                var total = 0;
                var qtdTotal = 0;

                for(var i=0; i < itens.length; i++) {
                    var textoConteudo = $(itens[i]).text();
                    var preco = parseFloat(textoConteudo);
                    total += preco;
                    var textoQuantidade = $(quantidadeTotalDeItens[i]).text();
                    /*
                    var quantidade = parseFloat(textoQuantidade);
                    qtdTotal += quantidade; 
                    */
                }
                $("#valor-total").text(total);
                qtdTotal = itens.length;
                $("#quantidade-de-items").text(qtdTotal);
        }

        $(calculoItens);