Funcão retorna "undefined" quando faz loop"
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.
Discussão (4)
Carregando comentários...