Problema diferença document.getElementById e innerHtml

3 respostas
D

Pessoal estou com o seguinte problema:

Eu tenho uma aplicação web onde eu vou adicionando produtos e o sistema vai calculando pra mim o subtotal ( que é o valor do produto * quantidade de produtos pedido) antes de fechar um pedido.

Então vamos supor, se eu adiciono um produto X com quantidade 10 e depois insiro o mesmo produto X com quantidade 10 tambem, o sistema atualiza a quantidade do produto X já inserido para 20 e recalcula o subtotal.
Até ai blz, mas qdo eu insiro um outro produto Y , ele volta o produto X para 10 unidades.

No document.getElement … ele aparece com o valor correto de 20 unidades, mas no innerHtml ele aparece com o valor de 10.

alguém tem idéia de como resolver esse problema??

obrigado

3 Respostas

A

Cara, sua dúvida é JavaScript né? Não sei se esse forum seria o forum correto para postar ela. Mas de qualquer forma posso tentar te ajudar… mas manda o codigo da sua pagina para olharmos!!!

D
var item=-1;
			for(j = 0; j<t_item; j++){	   		
		   		if(vetProdutos[j] == codigoDeBarras.value){
				  	item=j;				  	
				}
			}
		
		   
		   	if(item>=0){
		   		alert("item: "+item);
				window.alert('vet '+vetProdutos[item]);
				window.alert('cod '+codigoDeBarras.value);		   		
		   		
				  	window.alert('if');
				  	
				  	window.alert(document.getElementById('unidade'+item).value);
				  	window.alert('unidade'+item);
				  	var temp = (document.getElementById('unidade'+item).value)*1 + unidade.value*1;
				  
				  	document.getElementById('unidade'+item).value = temp; 
				  	
				  	document.getElementById('subTotal'+item).value = float2moeda((precoDeVenda.value*1 * temp));
				  	
			}else{	
						
					 var input_codigoDeBarras="<input style='width: 125px' class=cx name='codigoDeBarras"+i_item+"' value='"+codigoDeBarras.value+"' readonly='readonly' />"; 
					 var input_descricao="<input style='width: 200px' class=cx name='descricao"+i_item+"' value='"+descricao.value+"' readonly='readonly' />";
					 var input_unidade="<input style='width: 40px' class=cx name='unidade"+i_item+"' value='"+unidade.value+"' readonly='readonly' />";
					 var input_precoDeVenda="<input style='width: 80px' type='text' class=cx name='precoDeVenda"+i_item+"' value='"+precoDeVenda.value+"' readonly='readonly' />";
					 var input_subTotal="<input style='width: 100px' class=cx type='text' id='subTotal"+i_item+"' name='subTotal"+i_item+"' value='"+subTotal+"' readonly='readonly' />";
					 var bt_delete="<a href='#'><span class='bot_delete bot_img' title='::Excluir Item::' alt='::Excluir Item::' onClick='javaScript:deleteItem("+i_item+")'></a>";
					
					
					 var pedidos=document.getElementById('items');
					 if(t_item==0){
					 	pedidos.innerHTML="<span><label class='i_linha' style='width: 130px;text-align:center;'>Codigo De Barras</label><label class='linha' align='center'; style='width: 205px;text-align:center;'>Descricao</label><label class='linha' align='center'; style='width: 30px;text-align:center;'>Und.</label><label class='linha' align='center'; style='width: 80px;text-align:center;'>Preco Unitário</label><label class='linha' align='center'; style='width: 50px;text-align:center;'>SubTotal</label></span>";
					 }
					 alert(pedidos.innerHTML);
					 pedidos.innerHTML=pedidos.innerHTML+"<div id='"+i_item+"'>"+input_codigoDeBarras+input_descricao+input_unidade+input_precoDeVenda+input_subTotal+bt_delete+"<BR clear='ALL'></div>";
					 
				  
				  	
					 document.getElementById('t_pedidos').value=i_item;
						 
					 var totalSemDesconto = document.getElementById('totalSemDesconto').value;
					 document.getElementById('totalSemDesconto').value = float2moeda((totalSemDesconto*1) + (subTotal*1));
					  	 
					  	 
					 var desconto = document.getElementById('desconto').value;
					 if((desconto*1) > 0.0 ){
					  	 var total = document.getElementById('totalSemDesconto').value;
					  	 document.getElementById('total').value = float2moeda(( (total*1) * (1.0 - ((desconto*1) / 100.0))));
					 }
					 
					 
					  vetProdutos[i_item] = codigoDeBarras.value;
				 
				 
				     i_item++;
					 t_item++;
				  
				  
	        }
Pedrosa

Evite fazer cálculos monetários em Javascript para não ter problemas com arredondamento, para não perder a interatividade use ajax a faça o cálculo com BigDecimal no Java e devolva para a View.

Criado 16 de março de 2009
Ultima resposta 16 de mar. de 2009
Respostas 3
Participantes 3