Foros del Web » Programando para Internet » Javascript »

Ayuda settimeout()

Estas en el tema de Ayuda settimeout() en el foro de Javascript en Foros del Web. Tengo esta funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function actualizardatos ( indice )             {       ...
  #1 (permalink)  
Antiguo 31/10/2010, 11:51
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Ayuda settimeout()

Tengo esta funcion:
Código Javascript:
Ver original
  1. function actualizardatos(indice)
  2.             {
  3.             //DESDE AQUI-----------------------------------------------------<
  4.             var u_prod = $j("#units").html();
  5.             var price = $j("#sellprice").val();
  6.             var rwprice = $j("#rawprice").val();
  7.             var beneficio = (u_prod * price - (rwprice * 300 * u_prod)) - indice;
  8.             function redondeo2decimales(numero)
  9.                        {
  10.                 var original=parseFloat(numero);
  11.                 var result=Math.round(original*100)/100 ;
  12.                 return result;
  13.                    }
  14.             var beneficioredondeado = redondeo2decimales(beneficio);
  15.             if(beneficioredondeado >0){
  16.             $j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: green;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  17.             }else   {$j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: red;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  18.                 }
  19.             //HASTA AQUI---------------------------------------------------------------<
  20.             }//llave de funcion
¿Alguien me dice como hago para que el contenido que hay entre las lineas 3 y 19 se tarde en ejecutar 1 segundo?
He provado muchos settimeout pero no me va.. igual es que lo pongo mal, pero diganme el código necesario.
  #2 (permalink)  
Antiguo 31/10/2010, 13:24
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Ayuda settimeout()

se me ocurre que en vez de invocar a esa función, invoques a otra función y esta a su vez invoque a la que tienes. en la primera función es donde tienes que usar setTimeOut
  #3 (permalink)  
Antiguo 31/10/2010, 14:19
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

no entiendo muy bien a lo que te refieres..
  #4 (permalink)  
Antiguo 31/10/2010, 14:31
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda settimeout()

lo unico que necesitas es invocar la funcion con setTimeout. en el primer parametro escribes la invocacion de dicha funcion, y el segundo parametro el tiempo en milisegundos. ahora bien, sospecho que el primer parametro es el que te va resultar complicado. cuando digo invocar al funcion en el primer parametro de setTimeout, me refiero como el codigo con el retardo.
Código:
setTimeout(function(), milliseconds);
setTimeout("function()", milliseconds);
en esta ejemplificacion, fijate que aunque ambas lineas parecen ser iguales en realidad producen distintos resultados. el primero invoca la funcion en ese momento y lo que devuelva la funcion es lo que setTimeout utilizara para ejecutar en el retardo. en la segunda linea, el codigo se pasa como un string y luego javascript lo interpreta como codigo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 31/10/2010, 14:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

El problema es que la "invocación de la funcion" ya es complicada, ya que la estoy invocando asi:
Código Javascript:
Ver original
  1. $j(".el_day").mouseenter(function() {actualizardatos(this.parentNode.childNodes[18].childNodes[1].childNodes[1].value);})
Asique no se que es lo que tengo que poner exactamente para que funcione el setTimeout..
  #6 (permalink)  
Antiguo 31/10/2010, 15:00
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda settimeout()

ahhh, bendito jquery -por no decir maldito ya que no lo uso . de todos modos, no creo que sea tan complicado. fijate que tienes una funcion literal que se la pasas como argumento del metodo mouseenter. en el cuerpo de la funcion literal es donde tienes que agregar el setTimeout con la invocacion. no obstante, para hacerlo mas complicado, no puedes agregar el codigo como string porque el argumento de tu invocacion esta intimamente ligada a un objeto. es decir, this hace referencia a un objeto. si pasas la invocacion como string entonces this hace referencia otro objeto produciendo asi error. lo que tienes que hacer es, en la funcion literal de mouseenter creas una variable con el valor de this. en setTimeout, en lugar pasar un string de codigo a setTimeout, le pasas una funcion literal -si, otra adicional- donde haga referencia desde la variable creada en lugar de this.

por otro lado, lo que te recomiendo es que revises bien la documentacion del framework y determinar si ya tiene alguna implementacion con las caracteristicas que deseas lograr. creo que seria menos complicado que la solucion que te expongo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 31/10/2010, 15:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

¿Y no hay alguna manera de que en setTimeout("function()", milliseconds); en vez de poner una funcion se ponga un código javascript?
  #8 (permalink)  
Antiguo 31/10/2010, 15:10
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda settimeout()

no... parece que no lo estas entendiendo o sera por falta de conocimiento. setTimeout, al igual que otras funciones -setInterval, eval y Function- evaluan el codigo en el ambito global. de modo que si el codigo en cualquiera de las funciones antes mencionada hace uso de un scope en particular, el enlace del scope y el codigo se pierde y por ende produce error.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 31/10/2010, 15:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Ayuda settimeout()

solo por probar
Cita:
function actualizardatos(indice)
            {
setTimeOut(function() {
//resto funcion
},1000);
}
  #10 (permalink)  
Antiguo 01/11/2010, 02:56
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

Cita:
Iniciado por IsaBelM Ver Mensaje
solo por probar
He puesto esto:
Código Javascript:
Ver original
  1. function actualizardatos(indice)
  2.             {
  3.             setTimeOut(function() {
  4.                 //resto funcion
  5.            
  6.                 var u_prod = $j("#units").html();
  7.                 var price = $j("#sellprice").val();
  8.                 var rwprice = $j("#rawprice").val();
  9.                 var beneficio = (u_prod * price - (rwprice * 300 * u_prod)) - indice;
  10.                 function redondeo2decimales(numero)
  11.                              {
  12.                         var original=parseFloat(numero);
  13.                         var result=Math.round(original*100)/100 ;
  14.                         return result;
  15.                           }
  16.                 var beneficioredondeado = redondeo2decimales(beneficio);
  17.                 if(beneficioredondeado >0){
  18.                 $j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: green;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  19.                 }else   {$j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: red;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  20.                     }
  21.             },1000);
  22.            
  23.             }//llave de funcion
Y no va..
  #11 (permalink)  
Antiguo 01/11/2010, 05:28
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Respuesta: Ayuda settimeout()

Cita:
Iniciado por albarete Ver Mensaje
He puesto esto:
Código Javascript:
Ver original
  1. function actualizardatos(indice)
  2.             {
  3.             setTimeOut(function() {
  4.                 //resto funcion
  5.            
  6.                 var u_prod = $j("#units").html();
  7.                 var price = $j("#sellprice").val();
  8.                 var rwprice = $j("#rawprice").val();
  9.                 var beneficio = (u_prod * price - (rwprice * 300 * u_prod)) - indice;
  10.                 function redondeo2decimales(numero)
  11.                              {
  12.                         var original=parseFloat(numero);
  13.                         var result=Math.round(original*100)/100 ;
  14.                         return result;
  15.                           }
  16.                 var beneficioredondeado = redondeo2decimales(beneficio);
  17.                 if(beneficioredondeado >0){
  18.                 $j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: green;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  19.                 }else   {$j(".eldash").html('<td><img width="2" height="33" alt="" src="http://www.erepublik.com/images/parts/dash.jpg"></td><td><span type="text"style="font-size: 18px; color: red;">&nbsp;'+beneficioredondeado+'</span><br><span>&nbsp;'+currency+'</span></td>');
  20.                     }
  21.             },1000);
  22.            
  23.             }//llave de funcion
Y no va..
Que error te marca? el concepto está correcto y debería ejecutar ese código una sola vez un segundo después de que se invoca la función "actualizardatos".

Saludos
  #12 (permalink)  
Antiguo 01/11/2010, 05:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda settimeout()

@alberte,
fijate en la linea #3, esta mal escrito la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #13 (permalink)  
Antiguo 01/11/2010, 05:58
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

No da ningun error, simplemente no se ejecuta.
Yo no veo ningun error en la linea 3
  #14 (permalink)  
Antiguo 01/11/2010, 05:59
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda settimeout()

se escribe setTimeout no setTimeOut.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #15 (permalink)  
Antiguo 01/11/2010, 06:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Ayuda settimeout()

puffff!! que cabeza mas dura que tengo!!
  #16 (permalink)  
Antiguo 01/11/2010, 06:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Ayuda settimeout()

Funciona a la perfeccón!

Etiquetas: Ninguno
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 17:20.