Foros del Web » Programando para Internet » Javascript »

Problema al usar funcion con parametros en setTimeOut

Estas en el tema de Problema al usar funcion con parametros en setTimeOut en el foro de Javascript en Foros del Web. Hola intento hacer que aparezcan, una despues de otra y cada 20 milisegundos, uno de dos grupos de opciones en una capa div. El grupo ...
  #1 (permalink)  
Antiguo 22/08/2009, 00:38
 
Fecha de Ingreso: diciembre-2008
Ubicación: Lima - Perú
Mensajes: 187
Antigüedad: 15 años, 4 meses
Puntos: 3
Pregunta Problema al usar funcion con parametros en setTimeOut

Hola intento hacer que aparezcan, una despues de otra y cada 20 milisegundos, uno de dos grupos de opciones en una capa div.

El grupo de opciones que aparece cambia segun el boton al que haga click

Mi codigo es:

Código HTML:
<html>
<body>
<script language="javascript">
var opciones1=new Array("a","b","c","d","e")
var opciones2=new Array("uno","dos","tres","cuatro","cinco")
var opciones=new Array();
var n=0;

function MostrarMenu(opciones, Obj)
{
	var Obj_s=document.getElementById(Obj);
	Obj_s.innerHTML=Obj_s.innerHTML+opciones[n]+"<br>";	
	
	if (opciones[n+1])
	{	
		n=n+1;
		setTimeout("MostrarMenu("+opciones+",'"+Obj+"')",20);			
	}
	else
		n=0;

}
</script>

<input type="button" onclick="MostrarMenu(opciones1, 'div_opciones')" value="opciones 1"/>
<input type="button" onclick="MostrarMenu(opciones2, 'div_opciones')" value="opciones 2"/>
<div style='position:absolute; border-style:solid; border-width:1px;' id='div_opciones'></div>
</body></html> 
Aqui esta el ejemplo:

http://www.diego1311.byethost6.com/prueba_Write.html

El error que sale es que el primer elemento del arreglo no esta definido, veanlo ustedes en el ejemplo.. Tb di una mirada a otros temas anteriores parecidos al mio pero no me han ayudado, por favor diganme qué cambio hacer en mi codigo para que funcione. Gracias

PD: Ya intente de todo-por ejemplo quitando y poniendo aprostofes y comillas, solo funciona cuando en la funcion setTimeout cambio ("+opciones+") por el nombre de uno de los arreglos previamente definidos ya sea opciones1 u opciones2.
  #2 (permalink)  
Antiguo 22/08/2009, 06:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al usar funcion con parametros en setTimeOut

Hola

Prueba así

Código javascript:
Ver original
  1. <html>
  2. <body>
  3. <script language="javascript">
  4. var opciones1=new Array("a","b","c","d","e")
  5. var opciones2=new Array("uno","dos","tres","cuatro","cinco")
  6. var opciones3=new Array();
  7. var n=0;
  8. var i=0;
  9.  
  10. function MostrarMenu(opciones, Obj)
  11. {
  12. var Obj_s=document.getElementById(Obj);
  13.  
  14.  
  15. if (opciones == "opciones1") {
  16.     Obj_s.innerHTML += opciones1[n] + "<br>";
  17.     opciones3.unshift(opciones1[n]);
  18.     alert("Array " +opciones+ " - Array opciones3: " +opciones3)
  19.     n++
  20.  
  21. } else {
  22.  
  23.     Obj_s.innerHTML += opciones2[i] + "<br>";
  24.     opciones3.unshift(opciones2[i]);
  25.     alert("Array " +opciones+ " - Array opciones3: " +opciones3)
  26.     i++
  27. }
  28.  
  29. }
  30. </script>
  31.  
  32. <input type="button" onclick="MostrarMenu('opciones1', 'div_opciones')" value="opciones 1"/>
  33. <input type="button" onclick="MostrarMenu('opciones2', 'div_opciones')" value="opciones 2"/>
  34. <div style='position:absolute; border-style:solid; border-width:1px;' id='div_opciones'></div>
  35. </body></html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 22/08/2009, 09:04
 
Fecha de Ingreso: diciembre-2008
Ubicación: Lima - Perú
Mensajes: 187
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Problema al usar funcion con parametros en setTimeOut

Gracias pero lo que yo quiero es lograr enviar el parametro en setTimeout, el error que sale es "a no esta definido" cuando hago click sobro el primer boton y cuando uso el segundo aparece "uno no esta definido". Me da la impresion que el primer elemento del array se interpreta como variable.

Lo que quiero lograr es esto (ver ejemplo):

http://www.diego1311.byethost6.com/prueba_write2.html

aca si puedo porque solo tengo un array y en la funcion setTimeaut uso el nombre de dicho array tal cual es pero en mi problema anterior tengo dos array y por eso necesito usar el parametro. Y en el proyecto que estoy realizando uso ocho por eso necesito enviar ell parametro. Gracias
  #4 (permalink)  
Antiguo 22/08/2009, 09:26
Avatar de amanbur  
Fecha de Ingreso: noviembre-2006
Ubicación: Valencia
Mensajes: 129
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Problema al usar funcion con parametros en setTimeOut

Pero no necesitas definir Obj como variable, ya que solo tienes div_opciones no?, lo digo porque pruebes con ese valor constante a ver si te ayuda a descubrir el fallo, ya que parece que el fallo está en la llamada al setTimeout

Última edición por amanbur; 22/08/2009 a las 09:44
  #5 (permalink)  
Antiguo 22/08/2009, 10:27
 
Fecha de Ingreso: diciembre-2008
Ubicación: Lima - Perú
Mensajes: 187
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Problema al usar funcion con parametros en setTimeOut

bueno en realidad si tengo mas capas div, eso tb tiene que ser un parametro. Pero el problema no esta ahi sino al tratar de pasar el arreglo
  #6 (permalink)  
Antiguo 22/08/2009, 10:32
 
Fecha de Ingreso: diciembre-2008
Ubicación: Lima - Perú
Mensajes: 187
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Problema al usar funcion con parametros en setTimeOut

Wujuuuuuuuuuuuuuuuu!!!!!!!!!!

lo solucione:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
body>
<
script language="javascript">
var 
opciones1=new Array("a","b","c","d","e")
var 
opciones2=new Array("uno","dos","tres","cuatro","cinco")
var 
nuevas_opciones=new Array();
var 
n=0;

function 
pasaar_datos(opcionesObj)
{
    var 
Obj_s=document.getElementById(Obj);
    
Obj_s.innerHTML="";
    
nuevas_opciones=opciones;
    
MostrarMenu(opcionesObj);
}

function 
MostrarMenu(opcionesObj)
{
    var 
Obj_s=document.getElementById(Obj);
    
Obj_s.innerHTML=Obj_s.innerHTML+nuevas_opciones[n]+"<br>";    

    if (
nuevas_opciones[n+1])
    {    
        
n++;
        
setTimeout("MostrarMenu(nuevas_opciones,'"+Obj+"')",30);            
    }
    else
        
n=0;

}
</script>

<input type="button" onClick="pasaar_datos(opciones1, 'div_opciones')" value="opciones 1"/>
<input type="button" onClick="pasaar_datos(opciones2, 'div_opciones')" value="opciones 2"/>
<div style='position:absolute; border-style:solid; border-width:1px;' id='div_opciones'></div>
</body></html> 
Gracias po sus respuestas

Última edición por diego1311; 22/08/2009 a las 10:33 Razón: solucionado
  #7 (permalink)  
Antiguo 23/08/2009, 08:06
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al usar funcion con parametros en setTimeOut

Hola

No necesitas todo ese código, con esto es suficiente

Código javascript:
Ver original
  1. var opciones1=new Array("a","b","c","d","e")
  2. var opciones2=new Array("uno","dos","tres","cuatro","cinco")
  3.  
  4. function pasaar_datos(opciones, Obj)
  5. {
  6.     var Obj_s=document.getElementById(Obj);
  7.     Obj_s.innerHTML= "";
  8.     for (i = 0; i < opciones.length; i++) {
  9.          Obj_s.innerHTML += opciones[i]+"<br>";  
  10.     }
  11. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 26/08/2009, 20:47
 
Fecha de Ingreso: diciembre-2008
Ubicación: Lima - Perú
Mensajes: 187
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Problema al usar funcion con parametros en setTimeOut

Lo que pasa es que no quiero solamente que el texto se muestre, sino que se adieran una por una las opciones y que el efecto se note por eso es que empleo la funcion SETTIMEOUT , y por eso la necesidad del codigo
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 22:17.