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

Dúvida

bom dia... cheguei a iniciar sozinho, porém parei em um problema que não estou conseguindo resolver, o preço unitário está undefinit, e o preço final, #nan, então copiei e de vocês, e consta ainda o mesmo problema, segue o código :

function adicionar() {
    //recuperar valores nome do produto, quantidade e valor
    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];
    let valorUnitario = produto.split('R$ ')[1];
    let quantidade = document.getElementById('quantidade').value; 
    alert(nomeProduto);
    alert(valorUnitario);
    alert(quantidade);
    let preco = quantidade * valorUnitario;
    alert(preco);
    
    //Buscar produtos, nome, quantidade, valor
}
4 respostas
solução!

Oi, Luciano, tudo bem?

O problema que você está tendo acontece, devido ao espaço colocado no parâmetro que atua como separados para o recurso split() na variável valorUnitário.

let valorUnitario = produto.split('R$ ')[1];

Dessa forma, o JavaScript entende que o separador é um "R$" seguido de um espaço, e ao olhar no arquivo "index.html" não há esse espaço entre o valor e o símbolo e real, por isso o valor que retorna no alert é undefined, ou indefinido em português, já que não foi possível definir o valor.

Sobre o retorno da variável preco no alert ser NaN (Not a Number) isso acontece, pois você está multiplicando um valor indefinido por um número e por isso não há o retorno de um valor de fato.

Para solucionar ambos os problemas, basta remover o espaço depois do separador "R$". Ficaria assim:

let valorUnitario = produto.split('R$')[1];

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeboa tarde professor, depois da quantidade escolhida, está aparecendo a seguinte msn: mostrando erro input object html

Oi, Luciano, como vai?

Desculpe a demora em te responder!

Essa mensagem indica que estamos imprimindo diretamente o objeto em vez de acessar seu valor da variável quantidade. Para que no alert apareça o valor da quantidade indicada no input precisamos colocar a propriedade .value, após usar o document.getElementById. Ficaria assim:

let quantidade = document.getElementById('quantidade').value;

No código que você compartilhou em sua postagem original o .valueestá sendo atribuído corretamente, peço que verifique outros campos que precisam desta propriedade e verifique o código apresentado em aula.

Caso o problema persista, compartilhe seu código atualizado, para que eu consiga realizar mais testes e possa te ajudar de forma mais assertiva.

Abraços e bons estudos!

bom dia mestre, consegui, muito obrigado e tenha um bom dia.