| |||
Creacion automatica de Botones Hola a todos, espero y me puedan ayudar con mi problema, sucede que tengo en mi pagina una seccion donde se pueden descargar archivos, pero como estos siempre se estan modificando y el numero de archivos varia, seria una lata tener que hacer los links manualmente, asi que utilize codigo php con javascript para leer los archivos de mi folder en el servidor, y que me generara los links automaticamente, el problema es que, por ejemplo, cuando creo los botones con javascript(<input type etcccc.. onClic="alert(archivo[cont])">) donde cont es el contador que cuenta el numero de archivos en el folder y archivo es el array donde meto los nombres de los archivos, al presentar la pagina, todos los botones creados siempre se quedan con el ultimo valor de cont, hay alguna manera de hacer instancias de estos botones pero que se queden con el valor de cont que le corresponde al momento que fueron creados? |
| ||||
for(a=0;a<cont;a++){ document.write('<input type etcccc.. onClick="alert('+archivo[a]+')">'); }
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
oye karlankas, si funciona este codigo de cierta manera, digo de cierta manera porque al momento que lo corro, me marca un error de ejecucion, que dice: "Cadena del array" no esta definida. ejemplo: 'archivo' is undefined me podrias auxiliar en esto? gracias |
| ||||
El array archivo es de javascript? Pon al principio del script var archivo=new Array(); Pero acabas de decir que ya habías definido tú el array... si es de javascript no debería aparecer ese mensaje... ponme esa parte del script, por favor y le echamos un ojo.
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Hola Karlankas Buenos Dias(bueno no se que hora sea por alla), Gracias por responder mi mensaje, bueno el Codigo que tengo es el siguiente: ----------------------- <html> <head> <title>Listar</title> <!--Inicializa Variables--> <script language="JavaScript"> var nombre= new Array(10); cont=0; </script> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body leftmargin="0" topmargin="0"> <table width="50%" border="0" bordercolor="#006600" bgcolor="#ff0000"> <? //Lista los archivos existentes en el directorio $manejador=opendir('directorio'); while ($fil = readdir($manejador)) { if ($fil != "." && $fil != "..") {?> <script type="text/javascript"> nomb= "<? echo $fil; ?>"; </script> <tr> <script language="JavaScript"> cont++; nombre[cont]=nomb; </script> <td width="60%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,sans-serif"><strong><?php print $fil; ?> </strong></td> <script language="JavaScript"> document.write('<td width="10%"><input type="button" id="b" value="Escuchar" onClick="alert('+nomb+')"></td>'); </script> </tr> <? } } closedir($manejador); //termina de listar ?> ---------------- de hecho, ya inicialize las variables tambien en el Body, pero nada sigue marcando el error, espero y me puedas ayudar con este problemilla...Gracias. |
| |||
He probado el script que has puesto y me funciona perfectamente, solo daba problemas el alert de la LOC 45, y con poner document.write('<td width="10%"><input type="button" id="b" value="Escuchar" onClick="alert(nomb)"></td>'); todo funciona bien. ¿En que linea te falla exactamente? |
| ||||
Prueba con esto: Código HTML: <html> <head> <title>Listar</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body leftmargin="0" topmargin="0"> <table width="50%" border="0" bordercolor="#006600" bgcolor="#ff0000"> <? //Lista los archivos existentes en el directorio $directorio="."; $manejador=opendir($directorio); $lista=""; while ($fil = readdir($manejador)) { if ($fil != "." && $fil != "..") { $lista.="'".$fil."',"; }} closedir($manejador); $lista.="''";?>; <script type="text/javascript"> nombre=[<?echo $lista;?>]; for(a=0;a<nombre.length-1;a++){ document.write("<tr>\n") document.write('<td width="60%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,sans-serif"><strong>'+nombre[a]+'</strong></td>\n'); document.write('<td width="10%"><input type="button" id="b" value="Escuchar" onClick="alert(nombre['+a+'])"></td>\n'); document.write("</tr>\n"); } </script> </table> </body> </html>
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Si prefieres hacerlo todo en PHP (cosa que es más lógica)puedes poner esto. Haciendolo así no pierdes la posibilidad de manejar con javascript el nombre del archivo y además la página tardará menos en ejecutarse: Código PHP:
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Exelente Karlankas, funciona super, te agradezco el tiempo que te tomaste para analizar mi codigo, probe tanto el JS, como el de PHP, y los dos estan super, entonces supongo que la tecnica de encerrar las variables y contadores entre '++', es precisamente para evitar que las instancias de botones se queden con el ultimo valor, aunque hay que saber como y donde utilizarlos, porque tambien vi que con php formaste una cadena tipo array la cual despues la pasaste a una variable en JS,..bueno, lo sigo analizando, el que si me tiene un poco consternado es el codigo php, porque vi que utilizaste alert si abrir las etiquetas de JS, significa que el alert no es exclusivo de JS?, bueno ya no te molesto mas(por ahora), de antemano muchas Gracias y aqui estoy para cualquier cosa. |
| |||
Flopi, tambien a ti te agradezco la atencion, la manera de manejar el codigo asi como lo pusiste no causaba error, si no mas bien no funcionaba como queria, puesto que al poner la variable directa, todos los botones se quedaban con el mismo y ultimo valor que tomaba nomb en el ciclo, pero ya nuestro amigo Karlankas encontro la solucion, tambien te agradezco de antemano y aqui estoy para loque se te ofresca, gracias... |