JavaScript - Problemas con setTimeout

 
Vista:

Problemas con setTimeout

Publicado por Laura (6 intervenciones) el 12/12/2007 13:44:59
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.

[CODE]
<%@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>

[/CODE]

A ver si alguien me echa una mano...que yo ya no veo nada :(

Gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con setTimeout

Publicado por Laura (6 intervenciones) el 13/12/2007 10:14:40
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....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar