funções em array

Enviada por udson domingos da silva 
udson domingos da silva
funções em array
31 de July de 2012 às 06:42PM
function somar(){

vValor_unitario = document.getElementById("valor_unitario[]").value;

vQuantidade = document.getElementById("quantidade[]").value;

vDesconto= document.getElementById("desconto).value;

r = ( Number(vValor_unitario) * Number(vQuantidade) - Number(vDesconto) );

result = r;

s = Number(vQuantidade);

x = Number(vDesconto;

document.getElementById("total").value = r.toFixed(2) ;
document.getElementById("valor_produtos").value = r.toFixed(2);
document.getElementById("quant_produtos").value = s.toFixed(2);
document.getElementById("desconto_itens").value = x.toFixed(2);

coloquei um botão para calcular a linha de uma nota fiscal valorunitario * quantidade - desconto = total do iten.

porém só consigo fazer com que some a primeira linha queria saber como eu faço para somar as outras linhas... lembrando que uso uma biblioteca chamada jquery parta inserir as linhas de produtos da nota e suas quantidades automáticas.
Alexandre Leonardo
Re: funções em array
01 de August de 2012 às 10:23AM
Oi Udson.
Isso aí é Javascript, não PHP, mas vamos lá.

Se entendi, esses IDs com [] são checkboxes ou algo do genero, mas enfim, são listas.
Quando você pega vValor_unitario, por exemplo, ele deve estar recebendo uma lista e portanto o valor lido por .value é o que o ponteiro aponta - o primeiro.


Talvez o caminho seja fazer um loop FOR iterando a lista toda.
Não sei de cabeça como fazer em JS, mas ficaria algo +- assim ó, talvez tenha erros de sintaxe, se atente à lógica:

function somar(){
aLista_Valores = document.getElementById("valor_unitario[]");

for (var cont = 0; coun < aLista_Valores.size(); cont ++) {
vValor_unitario = document.getElementById("valor_unitario["+cont+"]").value;
vQuantidade = document.getElementById("quantidade["+cont+"]").value;
result += Number(vValor_unitario) * Number(vQuantidade);
}

result -= document.getElementById("desconto).value;
//daí voce continua o código...
}


ASSUMINDO QUE as listas _Valores e _unitario são do mesmo tamanho.
E, note que alterei a lógica de descontos, senão aplicaríamos o desconto total para cada ítem, ao invés que pra venda.
Se depois de corrigir os erros de sintaxe, a minha gambiarra de colocar o cont no meio do GetByID não funcionar, coloca aqui o código HTML com os campos, porque não sei exatamente o que são esses elementos e como está setando o ID deles.

Boa sorte.
abs"
udson domingos da silva
Re: funções em array
01 de August de 2012 às 08:01PM
Alexandre Leonardo Escreveu:
-------------------------------------------------------
> Oi Udson.
> Isso aí é Javascript, não PHP, mas vamos lá.
>
> Se entendi, esses IDs com [] são checkboxes ou
> algo do genero, mas enfim, são listas.
> Quando você pega vValor_unitario, por exemplo,
> ele deve estar recebendo uma lista e portanto o
> valor lido por .value é o que o ponteiro aponta -
> o primeiro.
>
>
> Talvez o caminho seja fazer um loop FOR iterando a
> lista toda.
> Não sei de cabeça como fazer em JS, mas ficaria
> algo +- assim ó, talvez tenha erros de sintaxe,
> se atente à lógica:
>
> function somar(){
> aLista_Valores =
> document.getElementById("valor_unitario[]");
>
> for (var cont = 0; coun < aLista_Valores.size();
> cont ++) {
> vValor_unitario =
> document.getElementById("valor_unitario["+cont+"]"
> ).value;
> vQuantidade =
> document.getElementById("quantidade["+cont+"]").va
> lue;
> result += Number(vValor_unitario) *
> Number(vQuantidade);
> }
>
> result -=
> document.getElementById("desconto).value;
> //daí voce continua o código...
> }
>
>
> ASSUMINDO QUE as listas _Valores e _unitario são
> do mesmo tamanho.
> E, note que alterei a lógica de descontos, senão
> aplicaríamos o desconto total para cada ítem, ao
> invés que pra venda.
> Se depois de corrigir os erros de sintaxe, a minha
> gambiarra de colocar o cont no meio do GetByID
> não funcionar, coloca aqui o código HTML com os
> campos, porque não sei exatamente o que são
> esses elementos e como está setando o ID deles.
>
> Boa sorte.
> abs"
udson domingos da silva
Re: funções em array
01 de August de 2012 às 08:20PM
sua logica foi boa alexandre mais mesmo assim nao consegui executar porque só executa a primeira linha ele está executando o alert 14 vezes
segue abaixo o a função e a função em javascript php e html que faz a inserção de linhas automaticas com jquery.

// aqui eu chamo a biblioteca jquery

</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> nota fiscal de entrada </title>
<script src = "validacaonotaentrada.js" type="text/javascript"></script>
<script type="text/javascript" src=http://localhost/jey/jquery-1.4.4.min.js></script>
<script type="text/javascript" src=http://localhost/jey/jquery-1.7.2.min.js></script>

<script language="javascript">


// a tal função
function somar(){

vLista = document.getElementById("valor_unitario[]");


for (var cont = 0; cont < (vLista.size); cont ++) {

vValor_unitario = document.getElementById("valor_unitario[]").value;

vQuantidade = document.getElementById("quantidade[]").value;
vDeducao = document.getElementById("desconto[]").value;

r = ( Number(vValor_unitario) * Number(vQuantidade) - Number(vDesconto) );

result = r;

s = Number(vQuantidade);

x = Number(vDesconto);

document.getElementById("total[]").value = r.toFixed(2) ;
alert ("teste");

//desse jeito ele executa o alert 14 vezes

document.getElementById("valor_produtos").value = r.toFixed(2);

document.getElementById("quant_produtos").value = s.toFixed(2);
document.getElementById("desconto_itens").value = x.toFixed(2);

}
}

// a baixo está os inputs onde insiro os valores:


$("#add").click(function(){
var i = 1;
var select = '<div class="itens">';
var input = '<div class="itens">';
input +=' <br><td> <select name ="produto[]"> <option>--------------SELECIONE UM PRODUTO----------------</option> <?php while ($linha = mysql_fetch_array($dados)){ ?><option value= "<?php echo $linha[0];?>" > <?php echo $linha[2]; ?> </option> <?php } ?> </select></label>'
input +=' <label> <input type="text" name="valor_unitario[]" size = "15" maxlength = "15" value= "" /></label>'

input +=' <label> <input type="text" size = "15" maxlength = "15" name="quantidade[]" value= "" /></label>'

input +=' <label> <input type="text" size = "15" maxlength = "15" name="desconto[]" value= "" /> </label>'

input +=' <label> <input type="text" size = "15" maxlength = "15" name="total[]" value= "" /> </label>'
input +='<a href="#" class="del">X</a> </div></br>'

$("#campos").append(input);

return false;
});
// aqui eu removo as linhas automáticas de uma por uma caso eu quiser

$('.del').live('click',function(){
$(this).parent().remove();
});

});
// aqui eu chamo a função somar
<input type="button" value="+" onclick="somar();" /></td>


// aqui eu chamo a função que insere linhas automaticas
<a href="#" id="add">PRODUTOS</a> </td>
Alexandre Leonardo
Re: funções em array
02 de August de 2012 às 05:24PM
Olha. Isso é JQuery... ta explicado.
JQuery faz basicamente assim: eles criam objetos na tela, a maioria inicialmente vazio e vão adicionando subobjetos em tempo real no navegador do visitante, assim fica rapido e possibilita AJAX.

O problema aí é que você tem objetos-listas em Javascript que estarão vazios.
Terá que procurar como referenciar em loop todos os elementos de uma lista dinâmica de Javascript. Eu já fiz isso uma vez a uns 4 anos atraz, não lembro qual foi a solução.


Isso é o que eu posso ajudar até então. Tem que googlear bastante mesmo. Posta a solução aqui quando achar!
Enquanto isso se eu tiver tempo, tento procurar por aqui, bl?

abs"
udson domingos da silva
Re: funções em array
02 de August de 2012 às 06:41PM
valew brother.... se eu conseguir achar a solução eu posto aqui!!!!
udson domingos da silva
Re: funções em array
02 de August de 2012 às 06:46PM
COMO EU POSSO PESQUIZAR NO GOOGLE VC SABERIA ME RESPONDER?
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.