Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2012, 11:54
fabian_n7
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Esta funcion retorna un resultado correcto pero al guardar es undefined

Buenos días a todos, tengo un problema con el resultado devuelto por una función que he creado. Para que sea claro, la función existe_div(div,numero,padre) recibe 3 parametros un nombre constante de id Ej: ''multimedia_elem" luego el segundo parametro es el numero de elemento actual Ej: 0 y el tercero es el numero de id del div padre al que pertenece Ej: 0 (en este caso luego accedo al padre asi- > 'contenedor_elem'+padre ) que es el div que se ve en el html abajo que contiene a los elementos (div) que voy creando.

Basicamente la función chequea que el nuevo id a crear no exista y en ese caso devuelve el nuevo id. Caso contrario lo que hace es sumarle 1 al numero del id actual y vuelve a acomprobar, así hasta que el id este desocupado.

El tema es que al parecer el resultado que devuelve es correcto (esto lo comprobe colocando un alert() justo antes del return) pero y aca viene el problema...

cuando utilizo esta funcion dentro de la otra (guardar_elementos_en_input()) el valor que recibo como retorno es "undefined"... estuve buscando y haciendo millones de pruebas pero no pude encontrar el error. Si alguien puede aclararme un poco cual podría estar siendo el problema se lo agradecería mucho.

si algo no se entiendo solo avisenme y lo explico mejor, Gracias!

Aquí el código:

Código Javascript:
Ver original
  1. function existe_div(div,numero,padre)//Ej div-> input- numero-> 1
  2. {
  3.     alert('LLEGAN LOS DATOS: DIV->'+div+'< NUMERO->'+numero+'< PADRE:->'+padre+'<')
  4.     if(padre != ''){padre_id = '-'+padre;}else{var padre_id = '';}
  5.    
  6.     nuevo_id = div+numero+padre_id;
  7.    
  8.     alert('f existe: Nuevo id1: '+ nuevo_id)   
  9.    
  10.         if(document.getElementById(nuevo_id) != null)
  11.         {
  12.             alert('El div ->' + nuevo_id + 'Ya existe!');
  13.                
  14.                 siguiente = (parseInt(numero)+1);
  15.                
  16.                 //nuevo_id = div + siguiente + '-' + padre_id;
  17.                
  18.                 existe_div(div,siguiente,padre);
  19.                
  20.         }
  21.         else
  22.             {
  23.                 alert('f existe- > RETORNA: '+nuevo_id);
  24.                
  25.                 return nuevo_id;
  26.                
  27.                
  28.                
  29.             }
  30.        
  31.            
  32.        
  33.        
  34.         //alert('El div ->' + nuevo_id + 'No existe!');
  35.        
  36.        
  37.        
  38.  
  39. }
  40.  
  41. function guardar_elementos_en_input() //contenido(contenido del resultado),tipo(imagen/texto/video)
  42. {
  43.        
  44.     //accede al iframe
  45.     frame = document.getElementById('cargador_frame');
  46.  
  47.     if(document.getElementById('procesar_subida') != null)
  48.     {
  49.        
  50.         resultado = document.forms['procesar_subida']._resultado_.value;
  51.        
  52.         //obtiene informacion del resultado
  53.         procesar_resultado = resultado.split('|');
  54.         id = procesar_resultado[0];
  55.        
  56.         tipo = procesar_resultado[2];
  57.        
  58.         switch(tipo)
  59.         {
  60.             case 'imagen':
  61.                         clase_imagen = 'imagen_multimedia';
  62.                         contenido = procesar_resultado[1];
  63.                         contenido_nombre = procesar_resultado[1];
  64.                         break;
  65.             case 'texto':
  66.                         clase_imagen = 'texto_multimedia';
  67.                         contenido = procesar_resultado[1];
  68.                         contenido_nombre = procesar_resultado[1].slice(0,30)+'...';
  69.                         break;
  70.             case 'video':
  71.                         clase_imagen = 'video_multimedia';
  72.                         contenido = procesar_resultado[1];
  73.                         contenido_nombre = procesar_resultado[1].split('\#');
  74.                         contenido_nombre = contenido_nombre[0];
  75.                         break; 
  76.             default:
  77.                
  78.                         break;
  79.         }
  80.        
  81.         // crea un div "elemento multimedia" dentro del contenedor
  82.        
  83.         agregar = document.getElementById('contenedor_elem'+id);
  84.         nuevo_elemento = document.createElement('div');
  85.        
  86.         nuevo_id_mult = existe_div('multimedia_elem',id,id);
  87.         alert('TIPO DEVUELTO :'+ typeof(nuevo_id_mult))
  88.    
  89.        
  90.         alert('ESTO DEVOLVIO LA FUNCION EXISTE DIV: ' + nuevo_id_mult)
  91.         nuevo_elemento.id = nuevo_id_mult;
  92.         //alert('NUEVO ID: '+nuevo_id_mult);
  93.         alert('CREA UN DIV ->('+nuevo_id_mult+') Y LO AGREGA AL CONTENEDOR-> contenedor_elem'+id)
  94.        
  95.         nuevo_elemento.className = 'elementos_multimedia';
  96.         agregar.appendChild(nuevo_elemento);
  97.        
  98.         //guarda el resultado procesado del frame en el nuevo elemento multimedia creado
  99.         incluir_contenido = document.getElementById(nuevo_id_mult);
  100.        
  101.         //obtiene el contenido de los elementos multimedia ya cargados
  102.         contenido_actual = incluir_contenido.innerHTML;
  103.         //comprueba si habia contenido creado o no
  104.         if(contenido_actual == ''){contenido_actual = '';}else{contenido_actual = incluir_contenido.innerHTML;}
  105.        
  106.         incluir_contenido.innerHTML = contenido_actual+'<div class="elementos_multimedia_caja"><input type="hidden" name="'+nuevo_id_mult+'" value="' + contenido + '|' + tipo  + '"/>'+
  107.                                     '<div class="'+clase_imagen+'"></div><div class="nombre_multimedia"><label>'+ contenido_nombre + '</label><div class="eliminar_elemento"><a href="#" onclick="eliminar_elemento_multimedia(event,\''+nuevo_id_mult+'\',\''+id+'\')">X</a></div></div></div>';
  108.    
  109.        
  110.         cadena_multimedia = document.forms['contenidos'].cadena_elementos_multimedia.value;
  111.        
  112.         if(cadena_multimedia == '')
  113.         {
  114.             document.forms['contenidos'].cadena_elementos_multimedia.value = nuevo_id_mult;
  115.         }
  116.         else
  117.             {
  118.                 document.forms['contenidos'].cadena_elementos_multimedia.value = cadena_multimedia + '|' + nuevo_id_mult;
  119.             }
  120.        
  121.     }
  122.  
  123. }

Código HTML:
Ver original
  1. <input type="button" value="Crear nuevo div" onclick="guardar_elementos_en_input();"/>
  2. <div class="contenedor_elementos" id="contenedor_elem0"><div id="multimedia_elem0-0" class="elementos_multimedia"><div class="elementos_multimedia_caja"><input type="hidden" value="video pepe#http://aasda-c.com.ar|video" name="multimedia_elem0-0"><div class="video_multimedia"></div><div class="nombre_multimedia"><label>video pepe</label><div class="eliminar_elemento"><a onclick="eliminar_elemento_multimedia(event,'multimedia_elem0-0','0')" href="#">X</a></div></div></div></div></div>
  3. <form id="procesar_subida" name="procesar_subida"><input type="hidden" value="0|video pepe#http://aasda-c.com.ar|video" name="_resultado_" id="_resultado_"></form>