Ir para conteúdo

POWERED BY:

Arquivado

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

brdesigner_gyn

Calculando valores de um array

Recommended Posts

Bom dia galera,

 

seguinte tô fazendo um sistema onde tenho campos no form, da seguinte maneira:

 

Item

Descrição

Quantidade

Valor Unitário

Valor Total

 

bom, os campos foram gerados em PHP por meio de um loop, e teria os respectivos nomes:

 

item1

descricao1

quantidade1

vlunitario1

vltotal1

 

item2

descricao2

quantitade2

vlunitario2

vltotal2

 

e assim por diante.

 

o q eu gostaria de fazer é: Multiplicar a quantidade e o vlunitario, para automaticamente dar o valor total.

 

fiz o script mah não tá dando certo:

 

<script language="javascript">						function cTot() {						var x = document.orcamento.x.value;						var vl_unit = parseFloat(document.orcamento.vlunit+x.value);						var quantidade = parseFloat(document.orcamento.qntprod+x.value);						var vl_tot = parseFloat(vl_unit*quantidade);													document.orcamento.vltot.value = parseFloat(vl_tot.tofixed(2));						document.orcamento.vltot+x.value = parseFloat(vl_tot.tofixed(2));						}					</script>

e estes são os campos do form:

 

<tr>							<input type="hidden" name="x" value="<?=$i?>">							<td width="110" height="20"  class="txtprom" align="center"><input type="text" name="item" value="<?=$i?>" size="5" class="news" disabled style="background-color:#FFFFFF; azimuth:center;"></td>																						<input type="hidden" name="item<?=$i?>" value="<?=$i?>">							<td width="390" height="20" class="txtprom" align="center"><input type="text" name="prod<?=$i?>" size="65" class="news"></td>							<td width="90" height="20" class="txtprom" align="center"><input type="text" name="qntprod<?=$i?>" size="10" class="news"></td>							<td width="90" height="20" class="txtprom" align="center"><input type="text" name="vlunit<?=$i?>" size="10" class="news" onBlur="return cTot();"></td>								<td width="90" height="20" class="txtprom" align="center"><input type="text" name="vltot" size="10" class="news" disabled style="background-color:#FFFFFF;"></td>																					  <input type="hidden" name="vltot<?=$i?>">						</tr>

e não dá certo nem com reza, alguém poderia m ajudar????

 

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

campo = "vltot"+x;document.orcamento.campo.value = parseFloat(vl_tot.tofixed(2));Se quiser fazer com o getElementByIDdocument.orcamento.getElementById(campo).value = parseFloat(vl_tot.tofixed(2));Porém tem que dar um id pro vl_tot..

Compartilhar este post


Link para o post
Compartilhar em outros sites

o getElementById pega o ID e nao o name do objeto....se não usa o document.formulario.campo.value mesmoflw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é cara...

 

tentei dos dois jeitos e nda deu certo sak?!?!?!?

tá falando assim:

 

por exemplo:

 

var u = "vlunit"+x;

 

var unit = document.orcamento.u.value;

 

aew dá o seguinte erro:

 

document.orcamento.u has no properties.

 

sak?!?!?!?

 

se puder dar uma luz

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só:

 

var u = "vlunit"+x;

var unit = document.orcamento.u.value;

 

A variável "u" é uma string, então você não pode colocá-la diretamente ali... você poderia fazer assim:

 

var unit = eval("document.orcamento." + u + ".value");

 

O eval() interpreta uma string como se fosse instruções de javacript. Não aconselho muito o seu uso, considero quase que uma gambi... prefiro colocar um atributo id pra cada campo com o mesmo valor do atributo name e rastreá-lo pelo document.getElementById(id).

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara tô ligado no qui você quis falar sak?!??!?mah sak só...o q eu criei foi um form, onde gera vários campos... e cada um tem o msm nome por exemplo:item1dps vem o campoitem2se eu colocar a id só como item, não vai dar erro?!pois vai fik:name="item1" id="item"dpsname="item2" id="item"???valews aew pela ajudaaaaaaaa!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera olha só como fico, e o erro q tá dando

 

essa parte é a repetição do PHP q vai criar o form:

<?					for ($i=1;$i<=$qnt;$i++) {					?>						<tr>							<input type="hidden" name="x" value="<?=$i?>">							<td width="110" height="20"  class="txtprom" align="center"><input type="text" name="item" value="<?=$i?>" size="5" class="news" disabled style="background-color:#FFFFFF; azimuth:center;"></td>																						<input type="hidden" name="item<?=$i?>" value="<?=$i?>">							<td width="390" height="20" class="txtprom" align="center"><input type="text" name="prod<?=$i?>" size="65" class="news"></td>							<td width="90" height="20" class="txtprom" align="center"><input type="text" name="qntprod<?=$i?>" id="qntprod<?=$i?>" size="10" class="news"></td>							<td width="90" height="20" class="txtprom" align="center"><input type="text" name="vlunit<?=$i?>" id="vlunit<?=$i?>" size="10" class="news" onBlur="return cTot()"></td>								<td width="90" height="20" class="txtprom" align="center"><input type="text" name="vl_tot<?=$i?>" id="vl_tot<?=$i?>" size="10" class="news" disabled style="background-color:#FFFFFF;"></td>																					  <input type="hidden" name="vltot<?=$i?>" id="vltot<?=$i?>">						</tr>				<?				}
esse é o script:

 

<script language="javascript">						function cTot() {						var x = document.orcamento.x.value;						var u = "vlunit"+x;  //valor unitário do form						var t = "vltot"+x;	 //valor total do form						var q = "qntprod"+x; //quantidade vinda do form						var v_t = "vl_tot"+x; //valor total q aparece no form						var vl_unit = parseFloat(document.getElementByID(u).value);						var quantidade = parseFloat(document.getElementByID(q).value);						var vtotal = parseFloat(vl_unit*quantidade);												(document.getElementByID(v_t).value) = parseFloat(vtotal.tofixed(2));						(document.getElementByID(t).value) = parseFloat(vtotal.tofixed(2));						//return false;						}					</script>
esse é o erro: (no console do Firefox)

 

Erro: document.getElementByID is not a function

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 156

 

será q assim fik mais fácil resolver essa pendenga???

valews aew quem ajudar

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

é véi tá f*** viu... :/

agora dá os erros:

 

se eu coloco [/b]document.orcamento.getElementById(u) aparece:

 

Erro: document.orcamento.getElementById is not a function

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 156

 

se eu coloco document.getElementById(u):

 

Erro: document.getElementById(u) has no properties

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 156

 

???

alguém poderia m ajudar q eu tô fritanu já...

 

valews aew a todossssssss!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta só com document.getElementById(), não document.orcamento.getElementById

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

véi tentei fazer isso já, mah aew dá esse erro:

 

document.getElementById(u):

 

Erro: document.getElementById(u) has no properties

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 156

 

???

Minha cabeçaaaa tá esprudinu...

:/

 

valews aew a todossssssss!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No momento que você executa o método document.getElementById, a página já foi toda carregada?

 

Se sim, você vai ter que ir debugando o seu código... no javascript, eu faço isso dando vários alerts em diversos pontos do código. Aí eu vejo a partir de onde que parou de funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

já descobri qual era o erro

 

dps eu posto aque pra vcs verem, é q agora eu tô com outra dúvida, bem no final do script:

 

sak só:

 

esse é o final do script:

parseFloat(eval("document.orcamento."+v_t+".value")) = vtotal;

 

e esse é o erro:

 

Erro: invalid assignment left-hand side

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 160

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, posta o seu script inteiro pra gente ver como ta agora.....pra que esse parseFloat??Ta meio estranho.... você da um parseFloat no value de um campo e depois atribui pra esse parseFloat um total.... . :wacko: manda o script inteiro! ultima versão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera agora meu script tá assim:

<script language="javascript">						function cTot() {							var y = document.orcamento.x.value;							var u = "vlunit"+y;  //valor unitário do form							var t = "vltot"+y;	 //valor total do form							var q = "qntprod"+y; //quantidade vinda do form							var v_t = "total"+y; //valor total q aparece no form							var vl_unit = parseFloat(eval("document.orcamento."+u+".value"));							var quantidade = parseFloat(eval("document.orcamento."+q+".value"));							var vtotal = parseFloat(vl_unit*quantidade);														eval("document.orcamento."+v_t+".value")) = vtotal;							eval("document.orcamento."+t+".value")) = vtotal;						}					</script>

q vcs axam q tá errado?!?!?!?!

:/

valews aew pelo help

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, seu codigo ta meio enrolado... :wacko:

você vai ter q dar uma olhada nos passos se ta fazendo tudo certo

 

a linha do erro e essa:

eval("document.orcamento."+v_t+".value")) = vtotal;

ele ta dando erro na atribuição.. então esse elemento ai não ta sendo encontrado...

 

seguindo o seu codigo..

 

var y = document.orcamento.x.value; var v_t = "total"+y; //valor total q aparece no form eval("document.orcamento."+v_t+".value")) = vtotal;

y é o valor do campo x.... por exemplo, "3"

se y é 3, então v_t seria "total3"

e o codigo da linha de erro seria... document.orcamento.total3.value...

 

ta certo isso??

ta dependendo muito do q você digita... tem q estar exatamente desse jeito..

sei la, cara, espero q tenha dado uma clareada, ve ai o q você consegue fazer.. talvez tenha outro jeito de fazer...

falou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom a linha q tá dando erro é essa:

 

eval("document.orcamento."+v_t+".value") = vtotal;
e o erro q tá dando conforme o FF é:

 

Erro: invalid assignment left-hand side

Arquivo-fonte: http://localhost/poli_v2/orc.php

Linha: 160

 

entendo um pouco de inglês e tá dizendo q a atribuição do lado esquerdo tá errado.

 

o q seria isso??? q a linha acima tá incorreta?!?!?!

 

valews

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera consegui... uma parte... xD

 

sak só:

 

<script language="javascript">						function cTot() {							var y = document.orcamento.x.value;							var u = "vlunit"+y;  //valor unitário do form							var t = "vltot"+y;	 //valor total do form							var q = "qntprod"+y; //quantidade vinda do form;							var v_t = "total"+y; //valor total q aparece no form							var vl_unit = parseFloat(eval("document.orcamento."+u+".value"));							var quantidade = parseFloat(eval("document.orcamento."+q+".value"));							var vtotal = parseFloat(vl_unit*quantidade);														eval("document.orcamento."+v_t+".value="+vtotal);							eval("document.orcamento."+t+".value="+vtotal);						}
bom o erro estava nas duas últimas linhas:

 

a expressão anterior estava:

eval("document.orcamento."+v_t+".value") = vtotal;

 

e o correto é:

eval("document.orcamento."+v_t+".value="+vtotal);

 

bom gostaria de agradecer a todos q tentaram m ajudar...

 

VALEWS http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

Bom AAlves axo q postamos juntos, mah agradeço a você por tentar m ajudar. xD

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.