Ir para conteúdo

POWERED BY:

Arquivado

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

marciocorbolan

Funcão retorna "undefined" quando faz loop"

Recommended Posts

Bem, a função funciona perfeitamente, tudo tudo... mas quando faço looping o valor retornado eh undefined!!

 

A logica é essa... a pessoa escolhe uma CATEGORIA no SELECT (COMBO BOX), quando ela escolhe uma opção é chamada a funcao que gera o uma SIGLA da opção seleciona e envia para outro campo do formulario. Só que para distinguir siglas, é feita uma varredura para gerar siglas diferentes.

 

Ex.:

Caneca

Caneta

Chaveiro

Camisa

Boné

 

Se a pessoa escolher a CATEGORIA "Boné", ira ser feita a SIGLAS "BON", mas se a pessoa escolher "Caneta" a SIGLA SERIA "CAN". O problema está ai, pois a SIGLA de "Caneca" seria "CAN", então fiz uma função que vai rodando ate achar uma quantidade de letras que difira uma palavra da outra, com isso a SIGLA de "Caneta" ficaria "CANET" e a sigla de "Caneca" ficaria "CANEC".

 

O problema é que, o looping é feito, mas o valor retornado é UNDEFINED, só que se você der um ALERT antes do RETURN ele mostrará a SIGLA feita pelo lopping.

 

 

Aqui vai o código da função em JAVASCRIPT que eu fiz, prestem atenção nos alerts!!!!

 

function remove_caracter(texto)
{
	var texto = texto.toLowerCase();

	texto = texto.replace("d","");
	texto = texto.replace(" ","");

	return texto; 
}


function remove_acento(texto)
{
	var texto = texto.toLowerCase();

	texto = texto.replace(/á|à|â|ã/g,"a");
	texto = texto.replace(/é|è|ê/g,"e");
	texto = texto.replace(/ó|ò|ô|õ/g,"o");
	texto = texto.replace(/ú|ù|û|ü/g,"u");
	texto = texto.replace(/ç/g,"c");

	return texto;  
}


function gerar_codigo()
{
	var categoria = document.frm_admin.cmb_categoria.value;
	var modelo = document.frm_admin.cmb_modelo.value;
	
	categoria = remove_acento(categoria);
	categoria = remove_caracter(categoria);
	categoria = verifica_categoria(categoria,3);

	alert(categoria);
	if(categoria == ""){alert("Escolha uma categoria!");}

	var codigo = categoria;
	document.frm_admin.txt_codigo.value = codigo;
}


function verifica_categoria(nome,tamanho)
{
	var teste_01 = nome;
	var teste_02 = teste_01.substr(0,tamanho);
	var teste_03 = "";
	var tot_opt = document.frm_admin.cmb_categoria.options.length;
	var contador = 0;
	
	teste_02 = teste_02.toUpperCase();

	for(i=0; i<tot_opt; i++)
	{
		teste_03 = document.frm_admin.cmb_categoria.options[i].value;
		teste_03 = teste_03.substr(0,tamanho);
		teste_03 = remove_acento(teste_03);
		teste_03 = remove_caracter(teste_03);
		teste_03 = teste_03.toUpperCase();
		if(teste_02 == teste_03)
		{
			contador++;
		}
	}
	
	if(contador == 1)
	{
		alert(teste_02);
		return teste_02;
	}
	else
	{
		alert("testeando -"+teste_02);
		tamanho++;
		verifica_categoria(teste_01,tamanho);
	}
}

Caso alguem tenha outra ideia de como gerar o codigo eu aceito tambem smile.gif

 

Grato pela atenção, Márcio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio,

 

No else da função 'verifica_categoria', você precisa definir que o resultado da função é a propria função. Já que ela está chamando a si propria.

 

function verifica_categoria(nome,tamanho)
{
	var teste_01 = nome;
	var teste_02 = teste_01.substr(0,tamanho);
	var teste_03 = "";
	var tot_opt = document.frm_admin.cmb_categoria.options.length;
	var contador = 0;
	
	teste_02 = teste_02.toUpperCase();

	for(i=0; i<tot_opt; i++)
	{
		teste_03 = document.frm_admin.cmb_categoria.options[i].value;
		teste_03 = teste_03.substr(0,tamanho);
		teste_03 = remove_acento(teste_03);
		teste_03 = remove_caracter(teste_03);
		teste_03 = teste_03.toUpperCase();
		if(teste_02 == teste_03)
		{
			contador++;
		}
	}
	
	if(contador == 1)
	{
		alert(teste_02);
		return teste_02;
	}
	else
	{
		alert("testeando -"+teste_02);
		tamanho++;
		return verifica_categoria(teste_01,tamanho); // aqui precisa ter o return já que o resultado da função será o resultado da função da função atual
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Douglas, não sabe como me ajudou!!!

Agora o script ta retornando os valores corretamente!!!!!

 

 

 

Powww... se alguem puder me ajudar mais uma vez eu agraço!!

Agora eu precisava fazer uma consulta no banco de dados e voltar um valor...

quando a pessoa escolher um categoria pegar o valor dela e buscar na tabela a quantidade de produtos com ela, depois voltar um numero junto com a SIGLA.

 

Ex.:

 

USUARIO ESCOLHE CATEGORIA -> CANECA - SCRIPT FAZ A SIGLA -> CANEC

UM NOVO SCRIPT BUSCA NA TABELA PRODUTOS, AS LINHA QUE CONTENHAO CANECA -> VOLTA UM NUMERO DE OCORRENCIA -> SUPOMOS QUE HAVIAM 9 LINHAS COM A PALAVRA CANECA

 

OS RESULTADOS SAO INSERIDOS NO CAMPO CODIGO E FEITO O SEGUINTE TEXTO -> CANEC-10

 

 

 

Gente essa agora é dificil, pensei aqui e nao consegui uma ideia.. se alguem puder me ajudar vo ficar muito agradecido!!!

 

t+

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.