Foros del Web » Programando para Internet » Javascript »

JS que no funciona en Firefox

Estas en el tema de JS que no funciona en Firefox en el foro de Javascript en Foros del Web. Puse en una página un código que me ayudaron a hacerlo aquí, con unos menúes. Se selecciona el Año, luego el mes, y luego el ...
  #1 (permalink)  
Antiguo 27/12/2005, 09:50
Avatar de medinauta  
Fecha de Ingreso: diciembre-2002
Ubicación: Guayaquil
Mensajes: 159
Antigüedad: 21 años, 4 meses
Puntos: 0
JS que no funciona en Firefox

Puse en una página un código que me ayudaron a hacerlo aquí, con unos menúes.

Se selecciona el Año, luego el mes, y luego el día.

El año empieza en 1978 hasta el año actual, si se elige el año 1978 el menú de los meses empieza desde Junio, sino desde Enero a Diciembre y dependiendo del mes que se eligió, el menú de los días presenta 30 o 31 días (o 28).

Sin embargo al cargarlo en Firefox no me funciona... qué debo cambiar para que funcione?

Y si hay como validar para que Si se lecciona Año 1978, mes Junio, el menú de los días aparezca desde el 19.

El código es:
Código:
var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

   function padNmb(nStr, nLen, sChr){
    var sRes = String(nStr);
    for (var i = 0; i < nLen - String(nStr).length; i++)
     sRes = sChr + sRes;
    return sRes;
   }

   function makeDateFormat(nDay, nMonth, nYear){
    var sRes;
    sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
    return sRes;
   }
    
   function addOpt(oCntrl, iPos, sTxt, sVal){
    var selOpcion = new Option(sTxt, sVal);
    oCntrl.options.add(selOpcion, iPos);
   }

   function lastDayOfMonth(nMonth, nYear){
    var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    if ((nMonth == 2) && (nYear % 4 == 0))
     return 29;
    else
     return aMonth[nMonth - 1];
   }

   function cambia(nCambiado){
    var nAno;
    var nMes;
    with (document.frm){
     nAno = parseInt(ano.options[ano.selectedIndex].value);
     switch (nCambiado){
      case 0:
       llenaMes(mes, nAno);
       break;
      case 1:
       nMes = parseInt(mes.options[mes.selectedIndex].value);
       llenaDia(dia, nAno, nMes)
       break;
      case 2:
       nMes = parseInt(mes.options[mes.selectedIndex].value);
       nDia = parseInt(dia.options[dia.selectedIndex].value);
       res.value = makeDateFormat(nDia, nMes + 1, nAno);
       cambiarImagen(res.value);
       break;
     }
    }
   }

   function llenaAno(oAno){
    var hoy = new Date();
    var ini = 1978;
    addOpt(oAno, 0, "", "");
    for (var i = ini; i <= hoy.getYear(); i++)
     addOpt(oAno, i - ini + 1, String(i), String(i));
   }

  function llenaMes(oMes, nAno){
    var hoy = new Date();
    var nFin = 11;
    while (oMes.length > 0) oMes.remove(0);
    if (nAno == hoy.getYear()) nFin = hoy.getMonth();
    addOpt(oMes, 0, "", "");
    for (var i = nAno==1978?5:0 ; i <= nFin; i++)
     addOpt(oMes, i + 1, aMeses[i], String(i));
   }

   function llenaDia(oDia, nAno, nMes){
    var hoy = new Date();
    var nFin = lastDayOfMonth(nMes + 1, nAno);
    while (oDia.length > 0) oDia.remove(0);
    if (nAno == hoy.getYear() && nMes == hoy.getMonth()) nFin = hoy.getDate();
    addOpt(oDia, 0, "", "");
    for (var i = 1; i <= nFin; i++)
     addOpt(oDia, i + 1, String(i), String(i));
   }

function cambiarImagen(fecha) {
    var img=document.getElementById("imagen");
    fecha=fecha.split("/");
    var oAno=fecha[2].substring(2); var oMes=fecha[1]; var oDia=fecha[0]; var oFold=fecha[2];
//    img.src=oAno+oMes+oDia+".jpg";
	img.src="http://images.ucomics.com/comics/ga/"+oFold+"/"+"ga"+oAno+oMes+oDia+".gif";

}
La página es: http://usuarios.lycos.es/rmc/garfield/garfield.htm
  #2 (permalink)  
Antiguo 27/12/2005, 11:08
Avatar de medinauta  
Fecha de Ingreso: diciembre-2002
Ubicación: Guayaquil
Mensajes: 159
Antigüedad: 21 años, 4 meses
Puntos: 0
Cita:
Y si hay como validar para que Si se lecciona Año 1978, mes Junio, el menú de los días aparezca desde el 19.
Bueno esto ya lo hice:
Código:
function llenaDia(oDia, nAno, nMes){
    var hoy = new Date();
    var nFin = lastDayOfMonth(nMes + 1, nAno);
    while (oDia.length > 0) oDia.remove(0);
    if (nAno == hoy.getYear() && nMes == hoy.getMonth()) nFin = hoy.getDate();
    addOpt(oDia, 0, "", "");
// Si año es 1978 y mes 5 (Junio) coloca "19" como valor de inicio, sino "1".
    for (var i = nAno==1978&nMes==5?19:1; i <= nFin; i++)
     addOpt(oDia, i + 1, String(i), String(i));
   }
Ahora solo modificar para que sea compatible con FIREFOX.
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 08:25.