Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/12/2007, 06:38
lsobpla
 
Fecha de Ingreso: febrero-2005
Mensajes: 44
Antigüedad: 19 años, 3 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!!!!