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
function existe_div(div,numero,padre)//Ej div-> input- numero-> 1 { alert('LLEGAN LOS DATOS: DIV->'+div+'< NUMERO->'+numero+'< PADRE:->'+padre+'<') if(padre != ''){padre_id = '-'+padre;}else{var padre_id = '';} nuevo_id = div+numero+padre_id; alert('f existe: Nuevo id1: '+ nuevo_id) if(document.getElementById(nuevo_id) != null) { alert('El div ->' + nuevo_id + 'Ya existe!'); siguiente = (parseInt(numero)+1); //nuevo_id = div + siguiente + '-' + padre_id; existe_div(div,siguiente,padre); } else { alert('f existe- > RETORNA: '+nuevo_id); return nuevo_id; } //alert('El div ->' + nuevo_id + 'No existe!'); } function guardar_elementos_en_input() //contenido(contenido del resultado),tipo(imagen/texto/video) { //accede al iframe frame = document.getElementById('cargador_frame'); if(document.getElementById('procesar_subida') != null) { resultado = document.forms['procesar_subida']._resultado_.value; //obtiene informacion del resultado procesar_resultado = resultado.split('|'); id = procesar_resultado[0]; tipo = procesar_resultado[2]; switch(tipo) { case 'imagen': clase_imagen = 'imagen_multimedia'; contenido = procesar_resultado[1]; contenido_nombre = procesar_resultado[1]; break; case 'texto': clase_imagen = 'texto_multimedia'; contenido = procesar_resultado[1]; contenido_nombre = procesar_resultado[1].slice(0,30)+'...'; break; case 'video': clase_imagen = 'video_multimedia'; contenido = procesar_resultado[1]; contenido_nombre = procesar_resultado[1].split('\#'); contenido_nombre = contenido_nombre[0]; break; default: break; } // crea un div "elemento multimedia" dentro del contenedor agregar = document.getElementById('contenedor_elem'+id); nuevo_elemento = document.createElement('div'); nuevo_id_mult = existe_div('multimedia_elem',id,id); alert('TIPO DEVUELTO :'+ typeof(nuevo_id_mult)) alert('ESTO DEVOLVIO LA FUNCION EXISTE DIV: ' + nuevo_id_mult) nuevo_elemento.id = nuevo_id_mult; //alert('NUEVO ID: '+nuevo_id_mult); alert('CREA UN DIV ->('+nuevo_id_mult+') Y LO AGREGA AL CONTENEDOR-> contenedor_elem'+id) nuevo_elemento.className = 'elementos_multimedia'; agregar.appendChild(nuevo_elemento); //guarda el resultado procesado del frame en el nuevo elemento multimedia creado incluir_contenido = document.getElementById(nuevo_id_mult); //obtiene el contenido de los elementos multimedia ya cargados contenido_actual = incluir_contenido.innerHTML; //comprueba si habia contenido creado o no if(contenido_actual == ''){contenido_actual = '';}else{contenido_actual = incluir_contenido.innerHTML;} incluir_contenido.innerHTML = contenido_actual+'<div class="elementos_multimedia_caja"><input type="hidden" name="'+nuevo_id_mult+'" value="' + contenido + '|' + tipo + '"/>'+ '<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>'; cadena_multimedia = document.forms['contenidos'].cadena_elementos_multimedia.value; if(cadena_multimedia == '') { document.forms['contenidos'].cadena_elementos_multimedia.value = nuevo_id_mult; } else { document.forms['contenidos'].cadena_elementos_multimedia.value = cadena_multimedia + '|' + nuevo_id_mult; } } }
Código HTML:
Ver original
<input type="button" value="Crear nuevo div" onclick="guardar_elementos_en_input();"/> <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>