3
respostas

Modificação de valores do elemento LI

Olá, como faço para dividir por 12 cada um dos valores da lista abaixo e modificar eles para o novo valor? Por exemplo: preciso alterar o valor R$233,00 para R$19,41 (sendo o resultado do valor normal dividido por 12). Eu até consegui alterar os valores, porém ele adiciona o valor do primeiro elemento (LI) em todos os outros da lista, ou seja, o valor final do primeiro elemento LI (19,41) é repetido em todos os outros LIs.

<ul>
    <li>
        <span class="nome">Nome do produto 1</span>
        <span class="valor">R$233,00</span>
    </li>
    <li>
        <span class="nome">Nome do produto 2</span>
        <span class="valor">R$433,00</span>
    </li>
    <li>
        <span class="nome">Nome do produto 3</span>
        <span class="valor">R$123,00</span>
    </li>
    <li>
        <span class="nome">Nome do produto 4</span>
        <span class="valor">R$943,00</span>
    </li>
</ul>

Link imagem da situação https://ibb.co/cUYxiU

Abs

3 respostas

Oi Ivan isso se deve ao fato de que todas as classes dentro das linhas tem o mesmo nome, então não há uma forma de diferenciar uma linha da outra. Você deve fazer um ajuste para que cada linha tenha uma identificação que a diferencie das outras, você pode fazer isso de muitas formas as mais comuns são atribuir nomes diferentes para seus seletores de classe, mas recomendo nesse caso fortemente o uso do id.

Espero ter ajudado. Bons estudos.

Olá Ivan uma ideia seria fazer assim:

let valores = document.querySelectorAll('.valor');

 valores.forEach( (valor) => {
      valor.textContent = "R$ " + (parseFloat(valor.textContent.slice(2))/12).toFixed(2);
   });

O que está acontecendo ali no código:

1) Primeiro eu pego um array de LI's 2) Depois eu itero sobre ele usando um forEach, que é um tipo de laço dos Array's 3) Em cada LI tem um R$ que impede do javascript de converter para valor. Então eu preciso remove-lo. Fiz isso usando a função slice(). 4) Faço a conversão (o próprio javascript faria mas resolvi fazer manualmente) e divido por 12. 5) Uso tudo dentro de um parenteses para usar o toFixed(2) dizendo que quero 2 casa decimais apenas senão ia ficar muito grande tipo 19,877767564646. 6) No final, devolvo o R$ do LI que removi no inicio. Boa sorte nos seus estudos!!

Oi Ivan ainda continua com dúvida ou já foi solucionada ?