Pregunta script

Saludos de nuevo!
Veras, hace tiempo te pedí un código para imágenes...
<html>
<head>
<script> 
function inicio(){ 
actualizaImagenesFinalizado(); 

function actualizaImagenesFinalizado(){ 
var srcimagen; 
var ahora = new Date(); 
var inicio, descanso, reanudacion, fin; 
for (ix=1; document.getElementById("fechahorainicio_" + ix); ix++){ 
inicio = construyeFecha(document.getElementById("fechahorainicio_" + ix).value); 
descanso = sumaMinutosFecha(inicio, 48); //48 por los minutillos de descuento que siempre hay 
reanudacion = sumaMinutosFecha(descanso, 15); 
fin = sumaMinutosFecha(reanudacion, 48); //48 por los minutillos de descuento que siempre hay 
if (ahora < inicio){ 
srcimagen = "imagenes/no_comenzado.gif"; 

else if (ahora < descanso){ 
srcimagen = "imagenes/jugando_primera_parte.gif"; 

else if (ahora < reanudacion){ 
srcimagen = "imagenes/descanso.gif"; 

else if (ahora < fin){ 
srcimagen = "imagenes/jugando_segunda_parte.gif"; 

else{ 
srcimagen = "imagenes/terminado.gif"; 

alert(srcimagen); 
document.getElementById("imagenEstadoPartido_" + ix).src = srcimagen; 


function construyeFecha(stringfecha){ 
var dia  = parseInt(stringfecha.substring(0,2));  
        var mes = parseInt(stringfecha.substring(3,5)) - 1;  
var anio  = parseInt(stringfecha.substring(6,10));   
var hora = parseInt(stringfecha.substring(11,13)); 
var minuto = parseInt(stringfecha.substring(14,16)); 
return new Date(anio, mes, dia, hora, minuto); 

function sumaMinutosFecha(fecha, minutos){ 
var nueva = new Date(); 
nueva.setTime(fecha.getTime() + (minutos * 60 * 1000)); 
return nueva; 

  </script>
</head>
<body onload="inicio()">
<table>
<tr>
<td>REAL MADRID - BARCELONA</td>
<td>17 Abril 2011 a las 20:45<input type="hidden" id="fechahorainicio_1" value="17-04-2011 20:45"></input></td>
<td><img id="imagenEstadoPartido_1"></img></td>
</tr>
<tr>
<td>AT. MADRID - GETAFE</td>
<td>17 Abril 2011 a las 20:30<input type="hidden" id="fechahorainicio_2" value="17-04-2011 20:30"></input></td>
<td><img id="imagenEstadoPartido_2"></img></td>
</tr>
</table>
</body>
</html>
Pues bien, me he dado cuenta de que existen 2 días en los que no funciona la imagen, más concretamente los días 8 y 9 de cada mes.. Lo que hace es mostrar la ultima imagen.. Cuando finaliza el partido..
¿Qué puede ser?
Gracias de antemano!
Respuesta
1
¿Quieres decir que para todos los partidos sale que ya han finalizado, cuando se consulta la web el día 8 o 9 de cada mes?
Por favor, pásame de nuevo la url de tu web para que le eche un vistazo
Cuando pongo la fecha, los días 8 y 9 sea del mes que sea, la imagen que muestra es la ultima (partido finalizado), aunque estemos a 2 de mes muestra como que el partido ya esta finalizado.. pero solo lo hace con estos días días..
Aquí te dejo el enlace
http://pruebaswebquink.webcindario.com/
Gracias
Ok. Es un tema de la conversión a entero que hace javascript. Cuando intenta convertir un string que comienza por "0", en vez de usar la base decimal, usa la base octal, y ni "08" ni "09" existen en octal, por lo que retorna 0.
Solución: especifica en la función parseInt() que la conversión se hace usando la base decimal. Te pongo la función que da problemas, ya corregida:
function construyeFecha(stringfecha){  
var dia  = parseInt(stringfecha.substring(0,2), 10);   
var mes = parseInt(stringfecha.substring(3,5), 10) - 1;   
var anio  = parseInt(stringfecha.substring(6,10), 10);    
var hora = parseInt(stringfecha.substring(11,13), 10);  
var minuto = parseInt(stringfecha.substring(14,16), 10);  
return new Date(anio, mes, dia, hora, minuto);  
}

Saludos, y lo siento por las pegas que te haya podido causar:
Carlos.
Funciona perfecto carlos, tan eficaz como siempre!
Y por favor, no me pidas perdón por nada, que bastante que me ayudas en mis dudas! Je je
Muchas gracias por todo! Un saludo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas