Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/03/2013, 16:42
Profesor_Lambetain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Anidamiento de setInterval/setTimeout ¿es posible?

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Podrías poner el código en varias líneas y sangrado, así es difícil de verlo.

setTimeout admite una función, no estoy seguro de que funcione poniendo entre comillas directamente código javascript.

No sé si tu intención es alternar imágenes, pero para eso no necesitas algo tan complejo, basta un setInterval que cada vez que se llame cambie la imagen. Guarda "algo" que te indique que imagen tienes en una variable y solo tienes que hacer un if de esa variable para decidir que imagen toca vez.

Código Javascript:
Ver original
  1. imagen=1;
  2. setInterval (function() {
  3.    if (imagen==1) {
  4.          // pon la imagen 2 en el boton
  5.          imagen = 2;
  6.    } else {
  7.          // pon la imagen 1 en el boton
  8.          imagen = 1;
  9.    }
  10. }, 1000);

Se bueno.
Gracias chiudiang.

Bueno, ahora me pones en la duda de si se puede poner código JS directamente en el primer argumento del setInterval/setTimeout (¡ es que soy novato, ja, ja !): yo creo que sí, es una lista de acciones que se deben realizar cuando se cumpla el set de tiempo que se fija como segundo argumento de la instrucción. Quiero decir que no necesariamente debe de ser una llamada a función ese primer argumento.

Te pongo el código separado como lo pides... ¡ pero es que es una única instrucción setInterval ! :

Código:
var control1, control2;
control1=window.setInterval("
if(document.forms[0].elements[10].value==1) {
         document.images[1].src='FotoshowOFF.jpg';
         control2=window.setTimeout("document.images[1].src='FotoshowOFF-2.jpg';",1000)
} else {
         clearInterval(control1);
         clearTimeout(control2);
}
",2000);
(sorry, pero no sé cómo se usa el indentado/envoltorio de código, en este caso)

Dices bien: mi intención es alternar dos imágenes .JPG iguales pero de diferente color de fondo (mientras se dé una determinada condición que es testeada por el if).
También llevas razón cuando dices que "guarde algo": podría abrir un nuevo campo hidden en el formulario que indique si la imagen presentada es una u otra, y actuar con el setInterval en consecuencia... pero no quisiera complicar más el formulario... es... una cuestión de "orgullo de programador" lo mío, si lo quieres ver así. En otras palabras: si mi instrucción no funciona, quiero saber por qué razón no funciona. Pero bueno, me pongo a ello (a definir un campo hidden).

Gracias nuevamente.