Accept pennies in a javascript code

Asked

Viewed 228 times

1

Hello I’m not getting to make the Code accept cents follow the javascript code someone gives a light there

<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>		

ascript

  • 1

    Have you tried instead of using parseInt use parseFloat, and use the dot to separate the pennies instead of the comma?

  • So price = parseFloat (price.replace("," , ".") );

  • Where does it not accept? You say it. By calculating the cents?

  • that ! Once I add that to the parseFloat javascript (price.replace("," ".") ); but it doesn’t make the dynamic calculation of my table

  • So it works price = parseint(price); however it does not visualize the pennies type what is 60,40 becomes only 60

  • 1

    It won’t even calculate. Parseint is only for you to use integers.

  • There at the beginning of the question script. Take out that parseint statement. You don’t have to keep formatting the value all the time. The value comes with a semicolon and how many houses it is, after calculating by the quantity it formats it with rounded preco_parseFloat = (price.toFixed(2));

  • You can format it several times. But keep in mind that when multiplying or dividing by the amount it will generate you squares after the comma again. The important thing is to format after the calculation. And parseint is not for monetary calculations or calculations that use decimal places.

  • value 60,90 with comma put so parseFloat (price.replace(',', '.') ) is a point in place of the comma I would like it to be comma

  • Check out Hemerson: http://answall.com/questions/11018/como-representdinheiro-em-javascript/175800#175800

Show 5 more comments

2 answers

2

Amigo use parseFloat(var.toFixed(2));.

Example: var valor = 10000.100000; var arredondado = parseFloat(valor.toFixed(2));

Return 10000.10

1

Dude, check it out. a teacher of mine passed me this code here when I was at the college

    function moeda(valor, casas, separdor_decimal, separador_milhar){ 

 var valor_total = parseInt(valor * (Math.pow(10,casas)));
 var inteiros =  parseInt(parseInt(valor * (Math.pow(10,casas))) / parseFloat(Math.pow(10,casas)));
 var centavos = parseInt(parseInt(valor * (Math.pow(10,casas))) % parseFloat(Math.pow(10,casas)));


 if(centavos%10 == 0 && centavos+"".length<2 ){
  centavos = centavos+"0";
 }else if(centavos<10){
  centavos = "0"+centavos;
 }

 var milhares = parseInt(inteiros/1000);
 inteiros = inteiros % 1000; 

 var retorno = "";

 if(milhares>0){
  retorno = milhares+""+separador_milhar+""+retorno
  if(inteiros == 0){
   inteiros = "000";
  } else if(inteiros < 10){
   inteiros = "00"+inteiros; 
  } else if(inteiros < 100){
   inteiros = "0"+inteiros; 
  }
 }
  retorno += inteiros+""+separdor_decimal+""+centavos;


 return retorno;

}

forehead old man!! hope to have helped.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.