Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PRWEB

Somar campos

Recommended Posts

Olá galera, tudo bem?

 

Estou quebrando a cabeça com um detalhe na função abaixo, não estou conseguindo somar o campo v_total_<%=i%>:

 

function ponto_dec(N){
texto = N.value.toString();
texto2 = "";
if (texto.indexOf(',') != -1)
{
for (var i = 0; i < texto.length; i++)
{
if(texto.charAt(i) == ",")
texto2 += ".";
else
texto2 += texto.charAt(i);
}
texto = texto2;
}

//texto[texto.indexOf(',')] = ".";
ponto = texto.indexOf('.');

if (ponto == -1)
{
texto += ".00";
Term = texto;
}
else
{
texto += "0";
decimal = ponto + 3;
Term = texto.substring(0,decimal);
}

if (Term == "0.0")
Term = "0.00";

if (Term == ".00")
Term = "0.00";

return Term;
//N.value = Term;
}

function total1(campo1,campo2,campo3)
{
var sub_total = 0;

//Igualando campos sem e com acréscimo
campo2.value = ponto_dec(campo2);
campo3.value = campo2.value;

//Pré total
campo3.value = campo1.value * campo2.value;
campo3.value = ponto_dec(campo3);

//Cálculo do sub_total
for (i=1;i<=5;i++)
sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);
//MEU PROBLEMA É NAS DUAS LINHAS DE CIMA, ele só soma se tiver 5 campos, e eu posso ter vários registros para fazer a soma.

document.myForm.sub_total.value = sub_total;
document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

//Cálculo do total geral
document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);
}

function total_geral1()
{
document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);

document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);
document.myForm.custo_envio.value = ponto_dec(document.myForm.custo_envio);
document.myForm.outros.value = ponto_dec(document.myForm.outros);
}

//Novo total
for (i=1;i<=5;i++)
{
document.getElementById('v_total_' + String(i)).value = parseFloat(document.getElementById('quant_' + String(i)).value);
document.getElementById('v_total_' + String(i)).value = ponto_dec(document.getElementById('v_total_' + String(i)))
}

//Sub_total
for (i=1;i<=5;i++)
sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

document.myForm.sub_total.value = sub_total;
document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);


//Total geral
total_geral1();

Por favor, se alguém puder tirar está duvida para mim, não só ficarei grato como q colocarei a função inteira já funcionando para alguém q precisar.

 

Obrigado,

 

:wacko:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seja bem-vindo ao Fórum PRWEB. Caso ainda não tenha lido as Regras do Fórum, clique aqui para conhecê-las

 

Informe a linha exata onde ocorre o erro.

 

Explique também porque postou na área de ASP, pois não encontrei nada relacionado. Caso seja dúvida somente de Javascript, moveremos o tópico para a área correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, pois não achei para ser postado na áreja de Javascript.

 

Meu problema é o seguinte, tenho um formulário com quantidade, valor unitário e valor total, eu utilizo uma função para criar registros em um embaixo do outro conforme eu preciso, exemplo:

 

quantidade | valor unitário | valor total

100 10,00 1000,00

 

quantidade | valor unitário | valor total

1000 1,00 100,00

 

e assim por diante

 

e depois tenho 3 campos

subtotal, outros, total_geral

 

aonde eu preciso somar o valor total = subtotal e assim por diante.

 

E eu precisava resolver isso urgente.

Já postei em outros foruns mais não fui bem sucedido.

 

Obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi é uma dúvida de Javascript. Moverei o tópico.

 

Sobre a dúvida, o erro no caso está na função total_geral1() ou existem outras funções com erros?

 

 

Tópico movido.

 

Origem: ASP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif/> Destino: Javascript/DHTML

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele me da erro nesta linha

 

//Cálculo do sub_total

for (i=1;i<=i;i++)

sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 

Seguinte erro

document.getElementById("v_total_" + String(i)) is null

[break on this error] sub_total = sub_total + parseFloat(docu...ntById('v_total_' + String(i)).value);\r\n

 

Obrigado

 

O q pode ser?

 

 

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif/>

 

Estou desesperado com esse problema, alguém poderia me ajudar?

Por favor!!!

Estou a 2 meses tentando mexer neste calculo mais não consigo mesmo.

 

Muito Obrigado

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

for (i=1;i<=i;i++)

isso está meio estranho não?

 

sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

você não precisa desse String(i)

 

verifique estas informações e volte a responder

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu verifiquei

 

Se eu não utilizar for

 

(i=1;i<=i;i++)

sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 

Quando for fazer quantidade * valor unitário = valor total ele da erro, se eu tiro essas 2 linhas ou a função + String(i)).value

 

Erro:

 

missing ) after argument list

[break on this error] sub_total = sub_total + parseFloat(document.getElementById('v_total_');\n

 

Segue uma imagem explicativa.

 

Imagem Postada

 

MUITO OBRIGADO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos, tudo bem?

 

Pessoal não consigo mesmo resolver este meu problema.

Por favor se alguém puder me ajudar, ficarei muito agradecido pela ajuda.

 

E tb que precisar de alguma ajuda que seja do meu conhecimento estarei a disposição.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

monta esse problema em uma página e posta o link para te ajudarmos

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

uantidade | valor unitário | valor total

100 10,00 1000,00

 

quantidade | valor unitário | valor total

1000 1,00 100,00

 

e assim por diante

 

Você está trabalhando com vírgula ou com pontos nos números?

Lembre-se: JavaScript trabalha com ponto-flutuante, e não vírgula!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você sabe quantos campos tem na pagina?

 

por exemplo quantos v_total_i tem na página?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Aprendiz CSS, conforme passei o link http://www.linear-hcs.com.br/testes/campos_somar.asp eu ao clicar no icone para criar mais registros eu tenho + 1 v_total então eu posso ter vários, conforme eu vou criando os registro vai adicionando campos para v_total

 

v_total

v_total

v_total e assim por diante na tabela.

 

Muito obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

substitua as partes e poste o que deu de certo e de errado

 


var totalDeCampos = document.getElementById("seu_id_que_sabe_quantos_v_total_tem").value;
var soma = 0;
for(i=0;i<totalDeCampos;i++){
     soma += document.getElementById("v_total_"+i).value;
}
alert(soma);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste jeito?

function total1(campo1,campo2,campo3)
{
 var sub_total = 0;
 
 var totalDeCampos = document.getElementById("id").value;
var soma = 0;
for(i=0;i<totalDeCampos;i++){
     soma += document.getElementById("v_total_"+i).value;
}
alert(soma);

 
 //Igualando campos sem e com acréscimo
 campo2.value = ponto_dec(campo2);
 campo3.value = campo2.value;
 
 //Pré total
 campo3.value = campo1.value * campo2.value; 
 campo3.value = ponto_dec(campo3); 
 
 //Cálculo do sub_total
 for (i=1;i<=i;i++)
 sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 document.myForm.sub_total.value = sub_total;
 document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);
 
 //Cálculo do total geral
 document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral); 
}

function total_geral1()
{
	
	document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);
 document.myForm.custo_envio.value = ponto_dec(document.myForm.custo_envio);
 document.myForm.outros.value = ponto_dec(document.myForm.outros);

//Novo total
	for (i=1;i<=i;i++)
	{
 		document.getElementById('v_total_' + String(i)).value = parseFloat(document.getElementById('quant_' + String(i)).value);
		document.getElementById('v_total_' + String(i)).value = ponto_dec(document.getElementById('v_total_' + String(i)))

//Sub_total
	for (i=1;i<=i;i++)
 	sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);
	
 	document.myForm.sub_total.value = sub_total; 
	document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

//Total geral
	total_geral1();
}
}

Muito Obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o código que eu e passei deu certo, ele mandou o alert com o valor da soma

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca ela no momento que você quer calcular o total

 

seja no onblur, onfocus, onclick

 

ai depende de você

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem?

 

Não estou conseguindo, coloquei assim:

function total1(campo1,campo2,campo3)
{
 var sub_total = 0;
 
 //Igualando campos sem e com acréscimo
 campo2.value = ponto_dec(campo2);
 campo3.value = campo2.value;
 
 //Pré total
 campo3.value = campo1.value * campo2.value; 
 campo3.value = ponto_dec(campo3); 
 
 //Cálculo do sub_total
 for (i=1;i<=i;i++)
 sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 document.myForm.sub_total.value = sub_total;
 document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);
 
 //Cálculo do total geral
 document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral); 
}

function total_geral1()
{
	
	document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);
 document.myForm.custo_envio.value = ponto_dec(document.myForm.custo_envio);
 document.myForm.outros.value = ponto_dec(document.myForm.outros);

//Novo total
	for (i=1;i<=i;i++)
	{
 		document.getElementById('v_total_' + String(i)).value = parseFloat(document.getElementById('quant_' + String(i)).value);
		document.getElementById('v_total_' + String(i)).value = ponto_dec(document.getElementById('v_total_' + String(i)))

//Sub_total
	for (i=1;i<=i;i++)
 	sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);
	
 	document.myForm.sub_total.value = sub_total; 
	document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

//Total geral
	total_geral1();
}
}

function totalcampos()
{
var totalDeCampos = document.getElementById("id").value;
var soma = 0;
for(i=0;i<totalDeCampos;i++){
     soma += document.getElementById("v_total_"+i).value;
}
alert(soma)
}

E no campo v_total coloquei:
<input name="v_total_<%=i%>" type="text" class="form2" id="v_total_<%=i%>" value="<%=gerar_os_itens("v_total")%>" size="10" onChange="javascript:totalcampos()"/>

Mas não funfou, tem algo de errado?

 

Obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca ao inves de onchange

 

onblur, apenas para ver se vai calcular

 

ou melhor ainda, coloca on botao chamando a função e vê o erro que retorna

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.