Ir para conteúdo
Fórum Script Brasil
  • 0

Soma De Campos Em Tabela


Lamenza

Pergunta

Tenho uma tabela construída com campos de formulário, aos quais são atribuídos IDs com o número da linha e o número de coluna (L_C).

Ao digitar um valor num campo, desejo que - no evento onBlur - um outro campo seja atualizado com a soma dos demais campos da mesma linha.

Escrevi uma função assim:

function somacampos(campo,linha){
var posicao = campo.name.indexOf("_");
var nlinha = campo.name.slice(0,posicao);
var soma = 0;
for(x=7;x<=19;x++) {
    valor = eval(document.getElementById(nlinha + '_' + x.toString()).value.replace(trocaV,"."));
    soma = valor + soma;
    }
camposoma = document.getElementById('soma_' + nlinha.toString());
camposoma.value=soma;
}

Ou seja, desejo percorrer as colunas de 7 a 19, obter o valor dos campos e somá-los, atualizando o campo soma, que também é identificado por seu número de linha (ID = soma_L).

Uma função equivalente em VBScript funciona, mas não consigo fazê-la funcionar em javascript. A função em VB é para o lado servidor. No lado cliente, preciso usá-la com java. O que está errado?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Cara, não entendi bem, quais são as ids dos campos?

são text-box que tu quer somar o que a pessoa digitar?

É isso?

Os campos são do tipo "<input type='text' id='2_7' name='2_7' value=0>".

Obter o valor dos campos não é problema. O problema está na soma dos mesmos.

Link para o comentário
Compartilhar em outros sites

  • 0

function somacampos(campo,linha){
var posicao = campo.name.indexOf("_");
var nlinha = campo.name.slice(0,posicao);
var soma = 0;
for(x=7;x<=19;x++) {
    valor = eval(document.getElementById(nlinha + '_' + x.toString()).value.replace(trocaV,"."));
    soma = valor + soma;
    }
camposoma = document.getElementById('soma_' + nlinha.toString());
camposoma.value=soma;
}

faz um debug so seu cógido:

function somacampos(campo,linha){

var posicao = campo.name.indexOf("_");

var nlinha = campo.name.slice(0,posicao);

var soma = 0;

for(x=7;x<=19;x++) {

valor = eval(document.getElementById(nlinha + '_' + x.toString()).value.replace(trocaV,"."));

alert(valor);

Break;

soma = valor + soma;

/* depois*/

alert(soma);

}

camposoma = document.getElementById('soma_' + nlinha.toString());

camposoma.value=soma;

}

verifique se esta recebendo os valors corretamente

e posta ae o resultado!

ps: isto é só um exemplo!!! você pode fazer uma verificação desde o início do script!!!

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

function somacampos(campo,linha){
var posicao = campo.name.indexOf("_");
var nlinha = campo.name.slice(0,posicao);
var soma = 0;
for(x=7;x<=19;x++) {
    valor = eval(document.getElementById(nlinha + '_' + x.toString()).value.replace(trocaV,"."));
    soma = valor + soma;
    }
camposoma = document.getElementById('soma_' + nlinha.toString());
camposoma.value=soma;
}

faz um debug so seu cógido:

function somacampos(campo,linha){

var posicao = campo.name.indexOf("_");

var nlinha = campo.name.slice(0,posicao);

var soma = 0;

for(x=7;x<=19;x++) {

valor = eval(document.getElementById(nlinha + '_' + x.toString()).value.replace(trocaV,"."));

alert(valor);

Break;

soma = valor + soma;

/* depois*/

alert(soma);

}

camposoma = document.getElementById('soma_' + nlinha.toString());

camposoma.value=soma;

}

verifique se esta recebendo os valors corretamente

e posta ae o resultado!

ps: isto é só um exemplo!!! você pode fazer uma verificação desde o início do script!!!

abraços

Caro Ferscomig,

A variável de controle do lop "for..." estava errada. O limite era 18 e não 19. Dai buscáva-se um campo que não existia e resultava em erro. Obrigado!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...