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

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Viendo el código me parece que es demasiado extenso... además, si terminar la temporización solo depende del campo del formulario, con una sola condición bastaría; y poner argumento a la función no parece buena idea... otra cosa, los campos de formulario son cadenas y no números, así que lo correcto es entrecomillarlo (aunque evidentemente pueda parecer innecesario):


Código:
h = 0;
fotos = ["FotoshowOFF.jpg" ,"FotoshowOFF-2.jpg"];
function changeimage() {
	if(document.forms[0].elements[10].value != "1")
		clearInterval(control)
	else
		document.images[1].src=fotos[++h % 2];
}
control = setInterval(changeimagen, 1500);
Te comento la idea:

No parece que importe entre alternar 1 y 2 o entre 0 y 1; además, si dividimos cualquier número entre 2, obtendremos dos posibles valores: 0 y 1; así que ¿por qué no, tan solo incrementamos un número entre 2 y rescatamos el resto y lo usamos para obtener uno de los dos valores de un array de dos elementos...

Fíjate sobre todo en la idea de usar menos condiciones.

Saludos
Sólo un detalle de purista: con tu código (que es el que adoptaré porque es el más "económico" en recursos) el valor del contador/variable h aumenta indefinidamente hasta que el usuario desactive la función de intercambio de botones, o cierre la página. Hombre, no es que esto vaya a producir un "overflow" ni en muchos milenios... pero para ser perfeccionista ¡está el mundo lleno de novatos como yo! ja, ja.