Ir para conteúdo

Arquivado

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

marcelobbt

Repetindo uma função n vezes.

Recommended Posts

Como faço para repetir a mesma função n vezes sem ter que reescreve-la?

 

Abaixo as funções:

 

//adiciona ao totalfunction adicionatotal0(valor) {	var $qtd0 = document.getElementById('qtd0');	var $custo0 = document.getElementById('custo0');	var $TotalResultado = document.getElementById('TotalResultado');	if (document.getElementById('item0').checked) {		$qtd0.value = parseInt ($qtd0.value) +1;		totalcusto ();	}}//subtrai ao totalfunction subtraitotal0(valor) {	var $qtd0 = document.getElementById('qtd0');	var $custo0 = document.getElementById('custo0');	var $TotalResultado = document.getElementById('TotalResultado');	if (document.getElementById('item0').checked) {		if ($qtd0.value > 0) {			$qtd0.value = parseInt ($qtd0.value) -1;			totalcusto ();		}	}}			//duas funções acima devem se repetir n vezes para cada registro no bd.						//a repetição deveria ficar assim:			//adiciona ao totalfunction adicionatotal1(valor) {	var $qtd1 = document.getElementById('qtd1');	var $custo1 = document.getElementById('custo1');	var $TotalResultado = document.getElementById('TotalResultado');	if (document.getElementById('item1').checked) {		$qtd1.value = parseInt ($qtd1.value) +1;		totalcusto ();	}}//subtrai ao totalfunction subtraitotal1(valor) {	var $qtd1 = document.getElementById('qtd1');	var $custo1 = document.getElementById('custo1');	var $TotalResultado = document.getElementById('TotalResultado');	if (document.getElementById('item1').checked) {		if ($qtd1.value > 0) {			$qtd1.value = parseInt ($qtd1.value) -1;			totalcusto ();		}	}}						//após deve somar as n mutiplicações na função abaixo			//calcula custo totalfunction totalcusto (valor) {	var $TotalResultado = document.getElementById('TotalResultado');	$TotalResultado.value = parseInt($qtd0.value)*parseInt($custo0.value)+parseInt($qtd1.value)*parseInt($custo1.value);}

Obs: Também não está funcionando o comando de chamar a função totalcusto.

Compartilhar este post


Link para o post
Compartilhar em outros sites
function adicionatotal_n(valor,n) {
    var $qtd_n = document.getElementById('qtd'+n);
    var $custo_n = document.getElementById('custo'+n);
    var $TotalResultado = document.getElementById('TotalResultado');
    if (document.getElementById('item'+n).checked) {
        $qtd_n.value = parseInt($qtd_n.value) + 1;
        totalcusto();
    }
}
//subtrai ao total
function subtraitotal_n(valor,n) {
    var $qtd_n = document.getElementById('qtd'+n);
    var $custo_n = document.getElementById('custo'+n);
    var $TotalResultado = document.getElementById('TotalResultado');
    if (document.getElementById('item'+n).checked) {
        if ($qtd_n.value > 0) {
            $qtd_n.value = parseInt($qtd_n.value) - 1;
            totalcusto();
        }
    }
}

Agora é só passar como segundo parâmetro esse id do banco (0, 1, etc).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou :upset:

Abaixo o código php que gera os campos do form para ver se ajuda

 

while ($a < $sql2) {
      	$sql = mysql_fetch_array($query);
	echo'<input type="checkbox" id="item',$a,'" name="item',$a,'" value="',$sql['Item'],'">',$sql['Item'],
	    '<input type="text" style="visibility: hidden;" id="custo',$a,'" name="custo',$a,'" value="',$sql['Preco_Venda'],'"/>
	    Qtd:
	    <input type="button" id="campopontos" name="mais" value="+" onclick="adicionatotal',$a,'()"/>
	    <input type="text" style="text-align: center" readonly="" name="qtd',$a,'" id="qtd',$a,'" value="0" class="textbox" size="3px" />
	    <input type="button" id="campopontos" name="menos" value="-" onclick="subtraitotal',$a,'()"/></br>';
	$a ++;
}

Queria que mostrasse o resultado dessas funções no campo qtd.

 

Depois que fosse feito a multiplicação para este campo:

 

<input size="3" readonly="" name="TotalResultado" style="text-align: center" type="text" id="TotalResultado" value="0"/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou porque você aparentemente não entendeu o que eu fiz.

 

Ao invés de:

 

onclick="adicionatotal',$a,'()

 

use

 

onclick="adicionatotal_n(null,$a)

 

 

Mesma coisa pro subtrai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiote, desculpa ficar perturbando, mas é que não entendo bem de javascript.

 

Agora só falta uma última questão. Precisava calcular as multiplicações mas só consegui fazer do último item clicado.

 

Abaixo o exemplo do que desejo:

 

[x]item 1 valor[100] [+] qtd[2] [-]

[ ]item 2 valor[ 50] [+] qtd[1] [-]

[x]item 3 valor[200] [+ ]qtd[3] [-]

 

No caso teria os itens 1 e 3 marcados, então ele multiplicaria valor *qtd da cada um selecionado e somaria para obter o resultado.

Então ficaria TotalResultado = 100*2+3*200 = 800. Só que o código que fiz ele só realiza o cálculo do item que adicionei/subtrai a quantidade.

 

Abaixo repito os códigos de adicionar e subtrair que chamam a função para obter o total.

 

//adiciona ao total
function adicionatotal_n(valor,n) {
	var $qtd_n = document.getElementById('qtd' + n);
	var $custo_n = document.getElementById('custo' + n);
	var $TotalResultado = document.getElementById('TotalResultado');
	if (document.getElementById('item' + n).checked) {
		$qtd_n.value = parseInt ($qtd_n.value) +1;
		totalcusto(TotalResultado, n);
	}
}
//subtrai ao total
function subtraitotal_n(valor,n) {
    var $qtd_n = document.getElementById('qtd'+n);
    var $custo_n = document.getElementById('custo'+n);
    var $TotalResultado = document.getElementById('TotalResultado');
    if (document.getElementById('item'+n).checked) {
        if ($qtd_n.value > 0) {
            $qtd_n.value = parseInt($qtd_n.value) - 1;
            totalcusto(TotalResultado, n);
        }
    }
}
			
//calcula custo total
function totalcusto (valor,n) {
	var $TotalResultado = document.getElementById('TotalResultado');
	var $qtd_n = document.getElementById('qtd'+n);
    	var $custo_n = document.getElementById('custo'+n);
	$TotalResultado.value = parseInt($qtd_n.value)*parseInt($custo_n.value);
}

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.