Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/03/2013, 16:57
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 emprear Ver Mensaje
Primero tenés que solucionar lo graves errores de sintáxis
fijate

Código:
window.setInterval("if(document.forms[0].elements[10].value==1){document.images[1].src='FotoshowO
 
No estás llamando una función o ejecutando una en el setInterval, estás escribiendo una cadena "código".... Que efecto querés lograr, no me queda claro, por lo pronto una estructura correcta sería

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. window.onload = function(){
  9.  
  10. var timer =setInterval(function(){
  11. if(document.getElementById('campo').value=='1'){
  12. console.log('El valor de campo es 1');
  13. }else if(document.getElementById('campo').value=='5'){
  14. clearTimeout(timer);
  15. console.log('timer detenido');
  16.  
  17. }else{
  18. console.log('El valor de campo es distinto de 1 y de 5');
  19. }
  20. }, 3000);
  21.  
  22. }
  23. //]]>
  24. </head>
  25. <input type="text" value="" id="campo">
  26. </body>
  27. </html>

ó si lo preferís

Código Javascript:
Ver original
  1. setTimeout(function() { Timer = setInterval(fnc, 100); }, 1000);
  2.  
  3. function fnc(){
  4. console.log('ejecutando funcion fnc');
  5. }
Es decir, tener definida la función en otra parte

Saludos
Bueno, al parecer llevas razón: el primer argumento del setInterval debe ser una función:
(sacado de [URL="http://pmblog.metroblog.com/setinterval"]http://pmblog.metroblog.com/setinterval[/URL] ):

Es importante tener en cuenta que la porción de código que ejecutemos debe estar comprendida DENTRO DE UNA FUNCION. En otras palabras, el setInterval() ejecuta funciones cada X lapso de tiempo.

Sin embargo, pon un alert() como primer argumento de un setInterval/setTimeout, y funciona, siendo que alert es un método del objeto window. Bueh... no deja de ser una función.

Me pongo a: definir una función aparte, la que invocaré en el setInterval. Dicha función discriminará qué imagen está siendo visualizada en ese momento (para ello, como sugería chiudiang, abriré un nuevo campo hidden).

Muchas gracias emprear.