Accept cents in javascript [duplicate]

0

I would like this code to take the cents of the value coming from the javascript variable

preco = parseInt(preco);

I've put it like this

preco = parseFloat(preco);

Full code below

total = 0;

function adiciona(id) {
    calcula(id, "adicao");
}

function remove(id) {
    calcula(id, "subtracao");
}

function calcula(id, operacao) {
    nomeid = "nome" + id;
    precoid = "preco" + id;
    qtdid = "qtd" + id;
    nome = document.getElementById(nomeid).innerHTML;

    preco = document.getElementById(precoid).innerHTML;
    preco = parseInt(preco);

    qtd = document.getElementById(qtdid).innerHTML;
    qtd = parseInt(qtd);

    //Debug
    //alert("Produto: " + nome + "\n Preço: " + preco);    

    if (operacao == "adicao") {
        total = total + preco;
        qtd = qtd + 1;
    } else {
        total = total - preco;
        qtd = qtd - 1;
    }

    document.getElementById(qtdid).innerHTML = qtd;
    document.getElementById("total").innerHTML = total;
}
    
asked by anonymous 05.01.2017 / 23:39

2 answers

1

Speak Hemerson,

Try the following:

// com preco ainda como string converte vírgula para ponto
preco.replace (", ", ". "); 

// depois converte para float
preco = parseFloat(preco); 

And in php you will need to use number_format to format when you want to display float with a comma as a decimal place. link

    
06.01.2017 / 00:06
0

 <script>
    
	    total = 0;
        
        function adiciona(id)
        {
            calcula(id,"adicao");
        }
        
        function remove(id)
        {
            calcula(id,"subtracao");
        }    
            
        function calcula(id,operacao)
        {
                nomeid  = "nome"+id;
                precoid = "preco"+id;
                qtdid   = "qtd"+id;
                
                nome  = document.getElementById(nomeid).innerHTML;
                
                preco = document.getElementById(precoid).innerHTML;    
                preco = parseInt(preco); 
                
                qtd   = document.getElementById(qtdid).innerHTML;
                qtd   = parseInt(qtd);

                //Debug
                //alert("Produto: " + nome + "\n Preço: " + preco);    
                
                if(operacao=="adicao")
                {
                    total = total + preco;
                    qtd = qtd + 1;
                }
                else
                {
                    total = total - preco;
                    qtd = qtd - 1;
                }
                
                document.getElementById(qtdid).innerHTML = qtd;
                
                document.getElementById("total").innerHTML = total;
        }    
            
        
    </script>
<script>
			function verifica_e_envia()
			{
				array_dados = new Array();
			
				colecao = document.getElementsByTagName("tr");
				
				qtd_blocos = colecao.length - 1; // O último tr da tabela é onde fica o total e está sendo descontado
				// É necessário saber a quantidade de blocos para poder usar em um loop catando os valores
				
				// Percorre os blocos catando nomes, quantidades e valores dos produtos com quantidade maior que zero
				for(i=1; i<=qtd_blocos ;i++)
				{
					qtdid = "qtd"+i;
					qtd   = document.getElementById(qtdid).innerHTML;
					qtd   = parseInt(qtd);
					
					if(qtd>0)
					{
						obj_tmp = {};
						
						nomeid = "nome"+i;
						nome   = document.getElementById(nomeid).innerHTML;
						
						precoid = "preco"+i;
						preco   = document.getElementById(precoid).innerHTML;
						preco   = parseFloat(preco);

						obj_tmp.nome  = nome;
						obj_tmp.preco = preco;
						obj_tmp.qtd   = qtd;
						obj_tmp.subtotal = qtd*preco;
						
						// adiciona elemento no array de dados que será enviado
						array_dados.push(obj_tmp);
					}
				}
				
				// põe o array_dados no input hidden json_dados
				document.getElementById("json_dados").value = JSON.stringify(array_dados);
				
				// envia o formulário form_pedido_produtos
				document.getElementById("form_pedido_produtos").submit();

			}
		</script>		
    
06.01.2017 / 00:22