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:
A ver si alguien me echa una mano...que yo ya no veo nada :(<%@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>
Gracias!!!!