Ir para conteúdo

POWERED BY:

Arquivado

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

maikiperin

função chamando uma função interna....

Recommended Posts

boa tarde,

 

tenho uma função num script js q faz o cálculo do total de uma determinada venda, nesta mesma função declarei uma outra função na qual esta terá a funcionalidade de formatar o total gerado pela função externa, tipo assim:

 

function a{   document.form1.Total.value = (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))- (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);document.form1.Total.value=formataValor(document.form1.Total.value,2)//formata o valor total com duas casas decimais function formataValor(campo,nro_casa_decimal){--}
mas na hora q chamo essa função através do evento onBlur de um input, acontece um erro de script acusando problema nessa linha da função q formata o valor total:

 

for (pos=0; pos < campooriginal.value.length; pos ++)

valor nulo ou não é um objeto, gostaria de saber onde estou errando ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara estou fazendo um mini-curso e logo logo vou colocar aqui no fórum pra vcs teremuma idéia de como funciona o JS. Bom qual é o teu problema?!!

 

1° - a menos q você trabalhe com propriedades de objetos e functions aninhadas(q você não precisa fazer) todas as functions devem ter ().

 

2° - Para você chamar uma função dentro de outra, basta você colocar o nome dela e informar os parâmetros quando necessário.

Ex.:

function um(){

instruções

}

 

function dois() {

instruções

um()

}

tenta arrumar as tuas apartir do exemplo pra ver se dá certo...

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá crystian, tudo na paz ??

 

Cara estou fazendo um mini-curso e logo logo vou colocar aqui no fórum pra vcs teremuma idéia de como funciona o JS. Bom qual é o teu problema?!!

 

Isso será muito bom !!

 

1° - a menos q você trabalhe com propriedades de objetos e functions aninhadas(q você não precisa fazer) todas as functions devem ter ().

 

Eu já faço isso, c você entrar na home, irá verificar....é q na hora de exemplificar eu me atrapalhei

 

2° - Para você chamar uma função dentro de outra, basta você colocar o nome dela e informar os parâmetros quando necessário.

Ex.:

function um(){

instruções

}

 

function dois() {

instruções

um()

}

 

já estou fazendo isso, mas o erro persiste !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

function a{ document.form1.Total.value = (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))- (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);document.form1.Total.value=formataValor(document.form1.Total.value,2)//formata o valor total com duas casas decimaisfunction formataValor(campo,nro_casa_decimal){--}

É esse o código q você está usando?posta o código q você está usando...

Compartilhar este post


Link para o post
Compartilhar em outros sites
<script language="JavaScript">function calcula()  {      -      -      -	if(tipo_entrega =="Sedex a Cobrar")	{  document.form1.Total.value = ((((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))-(((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final)*0.01)+(((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))-(((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);	}	else	{  document.form1.Total.value = (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))-(((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);	}  }document.form1.Total.value=formataValor(document.form1.Total.value,2);  function formataValor(campooriginal,decimais){   -   -   -}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

function calcula() {

    -

    -

    -

    if(tipo_entrega =="Sedex a Cobrar") {

    document.form1.Total.value = ((((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))- (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+ peso_final)*0.01)+(((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))- (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);

    } else {

    document.form1.Total.value = (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))- (((document.form1.OEssencial_Quantidade.value*39) + (document.form1.AFonte_Quantidade.value*50) + (document.form1.Voce_Quantidade.value*31))*aux)+peso_final);

    }

}

document.form1.Total.value =formataValor(document.form1.Total.value,2);

 

function formataValor(campooriginal,decimais)

{

  -

  -

  -

}

}

Bom cara, o q está em verde é o começo e o fim da tua primeira function, então teóricamente você não está usando uma dentro da outra, você está chamando a formataValor() fora da calcula(). Outra coisa é q está sobrando um fechamento de chaves. Dá uma olhadinha nisso depois diz qual o erro está dando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá crystian,

 

o problema não era em relação a abre ou fecha "{}", pois eu não havia postado o código completo da função devido ao seu tamanho...o problema estava na referência ao campo q eu estava utilizando dentro da função de formatação do valor:

 

errado

campooriginal.length.value

certo

campooriginal.length

foi só retirar a palavra reservada value q funcionou !! só q daí apareceu outro probleminha a função abaixo recebe meu valor, mas não está formatando adequandamente, por ex. c o valor recebido é 41.5 a função me retorna 415,00 sendo q era para retornar 41.50....poderia dar uma olhadinha no código e me falar oq teria q mudar para esta funcionar

 

function formataValor(campooriginal,decimais){  	var posicaoPontoDecimal;  	var campo = '';  	var resultado = '';  	var pos,sep,dec;	//Retira possiveis separadores de milhar  	for (pos=0; pos < campooriginal.length; pos ++)  	{    	if (campooriginal.charAt(pos)!='.')        campo = campo + campooriginal.charAt(pos);  	}     	//Formata valor monetário com decimais  	posicaoPontoDecimal = campo.indexOf(',');  	if (posicaoPontoDecimal != -1)    {    	sep = 0;      	for (pos=posicaoPontoDecimal-1;pos >= 0;pos--)      	{        	sep ++;        	if (sep > 3)        	{            	resultado = '.' + resultado;            	sep = 1;        	}         resultado = campo.charAt(pos) + resultado;         	}      	// Trata parte decimal      	if (parseInt(decimais) > 0 )      	{          resultado = resultado + ',';             pos=posicaoPontoDecimal+1;         for (dec = 1;dec <= parseInt(decimais); dec++)          {            	if (pos < campo.length)            	{                resultado = resultado + campo.charAt(pos);                pos++;            	}            	else                resultado = resultado + '0';             }      	} // trata decimais    }    // Trata valor monetário sem decimais    else    {    	sep = 0;      	for (pos=campo.length-1;pos >= 0;pos--)      	{        	sep ++;        	if (sep > 3)        	{            	resultado = '.' + resultado;            	sep = 1;        	}        	resultado = campo.charAt(pos) + resultado;         	}      	// Trata parte decimal      	if (parseInt(decimais) > 0 )      	{        	resultado = resultado + ',';          for (dec = 1;dec <= parseInt(decimais); dec++)          {               resultado = resultado + '0';             }      	} // trata decimais    }  	document.form1.Total.value = resultado;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

problema resolvido, segue a função para aqueles q tiverem o mesmo problema q eu tive

 

function formataValor(campooriginal){var valor=campooriginal.toString();var divisao=valor.split(".");var reais=divisao[0];var centavos=divisao[1];if(divisao[1] != null)	{  if(divisao[1].length == 1) 	 centavos=centavos+"0";  var formato_cent=centavos.substring(0,2);  document.form1.Total.value = (reais+"."+formato_cent);	}else	{  document.form1.Total.value = (reais+".00");	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.. Existem uma maneira de usar essa função para escrever algo na tela..

 

function formataValor(campooriginal){var valor=campooriginal.toString();var divisao=valor.split(".");var reais=divisao[0];var centavos=divisao[1];if(divisao[1] != null){ if(divisao[1].length == 1)  centavos=centavos+"0"; var formato_cent=centavos.substring(0,2); document.form1.Total.value = (reais+"."+formato_cent);}else{ document.form1.Total.value = (reais+".00");}}

Dentro do BODY da pagina na hora de escrever uma variavel na tela chamar a função...

 

 

<div>

#(VARIAVEL)# <<chamar a função nesta parte para formatar para 00.00

</div>

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.