Foros del Web » Programando para Internet » Javascript »

Creacion automatica de Botones

Estas en el tema de Creacion automatica de Botones en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/12/2004, 11:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
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?
  #2 (permalink)  
Antiguo 21/12/2004, 11:43
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61


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.
  #3 (permalink)  
Antiguo 21/12/2004, 19:26
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
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
  #4 (permalink)  
Antiguo 22/12/2004, 02:38
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
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.
  #5 (permalink)  
Antiguo 22/12/2004, 11:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
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.
  #6 (permalink)  
Antiguo 23/12/2004, 02:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 19 años, 4 meses
Puntos: 0
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?
  #7 (permalink)  
Antiguo 23/12/2004, 03:18
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
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.
  #8 (permalink)  
Antiguo 23/12/2004, 03:32
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
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:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<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);
$nombre=array();
while (
$fil readdir($manejador)) {
if (
$fil != "." && $fil != "..") {
$nombre[]=$fil
}}
closedir($manejador);

for(
$a=0;$a<count($nombre);$a++){

echo
'<tr>
<td width="60%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,sans-serif"><strong>'
.$nombre[$a].'</strong></td>
<td width="10%"><input type="button" id="b" value="Escuchar" onClick="alert(\''
.$nombre[$a].'\')"></td>
</tr>

'
;
}
</script>
</table>
</body>
</html>
Dime que tal!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #9 (permalink)  
Antiguo 23/12/2004, 12:25
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
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.
  #10 (permalink)  
Antiguo 23/12/2004, 12:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
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...
  #11 (permalink)  
Antiguo 23/12/2004, 12:34
Avatar de [--LARS--]  
Fecha de Ingreso: noviembre-2004
Ubicación: Desde el más alejado rincón del planeta...
Mensajes: 275
Antigüedad: 19 años, 5 meses
Puntos: 0
q´sera, q´no se porque segui el ejemplo de karlankas y me salio todo mal seguro debo de haber equivocado alguna linea
  #12 (permalink)  
Antiguo 23/12/2004, 19:18
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
Tal vez, porque a mi me funciono a la perfeccion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.