Foros del Web » Programando para Internet » Javascript »

Problema con setTimeout

Estas en el tema de Problema con setTimeout en el foro de Javascript en Foros del Web. Hola! no consigo encontrar dónde tengo el error o qué estoy haciendo mal, he mirado miles de cosas por internet y ya no sé... Al ...
  #1 (permalink)  
Antiguo 12/12/2007, 06:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 44
Antigüedad: 19 años, 2 meses
Puntos: 1
Problema con setTimeout

Hola!
no consigo encontrar dónde tengo el error o qué estoy haciendo mal, he mirado miles de cosas por internet y ya no sé...
Al ejecutar este código para hacer unas pruebecillas me sale un error en IE de "Se esperaba un objeto", y no sé por qué.
El caso es que este código lo que hace es recoger los datos de hora inicial y hora final que llegan de un formulario, después al cargarse la página calculo el tiempo que queda hasta la hora inicial y cuando llega a esa hora pasa a la función envia(). El problema viene cuando llega al setTimeout que está dentro del if, ahí es cuando al ejecutarse el retraso de 10000 milisegundos da el error en IE y ya no se ejecuta más.

Código:
<%@page contentType="text/html;charset=ISO-8859-1" import="java.util.Calendar,java.text.SimpleDateFormat,java.util.TimeZone,java.io.*,java.util.Date"%>
<html>
<head>
<title>Insert title here</title>
<%
String hora_ini_aux = request.getParameter("fecha_inicio");
String hora_fin_aux = request.getParameter("fecha_fin");
String[] vect_hora_ini = hora_ini_aux.split(":");
int horas_ini = Integer.parseInt(vect_hora_ini[0].trim());
int minutos_ini = Integer.parseInt(vect_hora_ini[1].trim());
int segundos_ini = Integer.parseInt(vect_hora_ini[2].trim());
Calendar calendar_ini = Calendar.getInstance(); 
calendar_ini.set(Calendar.HOUR_OF_DAY, horas_ini); 
calendar_ini.set(Calendar.MINUTE, minutos_ini); 
calendar_ini.set(Calendar.SECOND, segundos_ini); 
Date time_ini = calendar_ini.getTime(); 

String[] vect_hora_fin = hora_fin_aux.split(":");
int horas_fin = Integer.parseInt(vect_hora_fin[0].trim());
int minutos_fin = Integer.parseInt(vect_hora_fin[1].trim());
int segundos_fin = Integer.parseInt(vect_hora_fin[2].trim());
Calendar calendar_fin = Calendar.getInstance(); 
calendar_fin.set(Calendar.HOUR_OF_DAY, horas_fin);
calendar_fin.set(Calendar.MINUTE,minutos_fin);
calendar_fin.set(Calendar.SECOND, segundos_fin);
Date time_fin = calendar_fin.getTime(); 
Calendar fecha_actual= Calendar.getInstance();
Date ahora=fecha_actual.getTime();
long dif_milis=time_ini.getTime() - ahora.getTime();
%>

<script language="javascript" type="text/javascript">
var ident;
function enviar_form(){

var fecha_ini=new Date();
fecha_ini="<%=time_ini%>";
var fecha_fin=new Date();
fecha_fin="<%=time_fin%>";
var miliseg=<%=dif_milis%>;

if (miliseg>0)
{
	ident=setTimeout("envia()",miliseg);
}
else
{
	miliseg=0;
	ident=setTimeout("envia()",miliseg);
}
	
}	
function envia(){
	var mydate=new Date();
	var year=mydate.getYear();
	var day=mydate.getDay();
	var month=mydate.getMonth()+1;
	if (month<10)
		month="0"+month;
	var daym=mydate.getDate();
	if (daym<10)
		daym="0"+daym;
	var hora=mydate.getHours();
	if(hora<10)
		hora="0"+hora;
	var minuto=mydate.getMinutes();
	if(minuto<10)
		minuto="0"+minuto;
	var segundo=mydate.getSeconds();
	if(segundo<10)
		segundo="0"+segundo;
	document.write("<b>"+daym+"/"+month+"/"+year+" "+hora+":"+minuto+":"+segundo+" </b>=> hola");
	document.write("<br>");
	var nueva=new Date();
	nueva2=nueva.getTime();
	var nueva3=new Date();
	nueva3=<%=calendar_fin.getTimeInMillis()%>;
	var t_fin=nueva3 - nueva2;
	if (t_fin>0)
	{	
		ident = setTimeout("envia()",10000);
		
	}
	else
	{
		parar();
	}
	
}

function parar(){
	alert("se acabó");
	clearTimeout(ident);
	}
		
</script>
</head>
<body onLoad="javascript:enviar_form()">
</body>
</html>
A ver si alguien me echa una mano...que yo ya no veo nada :(

Gracias!!!!
  #2 (permalink)  
Antiguo 13/12/2007, 03:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 44
Antigüedad: 19 años, 2 meses
Puntos: 1
Re: Problema con setTimeout

Hola de nuevo!!

He descubierto que el problema anterior desaparece si elimino todos los document.write que me escribían cosas en el navegador...
Entonces, si necesito escribir en el navegador cada vez que el setTimeout llama a la función, ¿cómo lo puedo hacer?¿hay alguna otra forma de escribir??

Gracias!! Alguna idea....
  #3 (permalink)  
Antiguo 13/12/2007, 10:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Problema con setTimeout

Lo único rao que veo es en la primera línea write() tienes algo sospechoso: ...</b>=> hola"); me refiero al =>
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 07:08.