Foros del Web » Programando para Internet » Javascript »

error: se esperaba una funcion

Estas en el tema de error: se esperaba una funcion en el foro de Javascript en Foros del Web. Buenas Tengo un problemilla con el siguiente código. Al poner una fecha en el campo FUR corregida, hace unos cálculos de fechas y rellena los ...
  #1 (permalink)  
Antiguo 11/02/2010, 05:46
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación error: se esperaba una funcion

Buenas

Tengo un problemilla con el siguiente código. Al poner una fecha en el campo FUR corregida, hace unos cálculos de fechas y rellena los campos de texto.

La primera ejecución es correcta, falla en al segunda.

Les agradezco su ayuda.

Código Javascript:
Ver original
  1. function eliminarCerosIzq(cadena) {
  2.     for(i=0; i<cadena.length; )
  3.     {
  4.         if(cadena.charAt(i)=="0")
  5.             cadena=cadena.substring(i+1, cadena.length);
  6.         else
  7.             break;
  8.     }
  9.     return cadena;
  10. }
  11.  
  12. function FW(fecha) {    alert('Entra en FW()');
  13.     month = fecha.getMonth();
  14.     date = fecha.getDate();
  15.  
  16.     f1 = new Date(fecha.getFullYear(),0,1,0,0);
  17.     dayf1 = f1.getDay();
  18.     if(dayf1 == 0) dayf1 = 7;
  19.  
  20.     f2 = new Date(fecha.getFullYear(),month,date,0,0);
  21.     dayf2 = f2.getDay();
  22.     if(dayf2 == 0) dayf2 = 7;
  23.  
  24.     if(month == 0 && date == 1 && dayf2 > 4 || month == 0 && date == 2 && dayf2 > 5 || month == 0 && date == 3 && dayf2 == 7)
  25.     {
  26.         f1 = new Date(fecha.getFullYear()-1,0,1,0,0);
  27.         f2 = new Date(fecha.getFullYear()-1,11,31,0,0);
  28.         dayf1 = f1.getDay();
  29.         if(dayf1 == 0) day = 7;
  30.     }
  31.     if(month == 11 && date == 31 && dayf2 < 4 || month == 11 && date == 30 && dayf2 < 3 || month == 11 && date == 29 && dayf2 == 1)
  32.         return(1);
  33.  
  34.     if(dayf1 <5)
  35.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7) + 1);
  36.     else
  37.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7));
  38.     return FW;
  39. }
  40.  
  41. function FW2(fecha) {   alert('Entra en FW2()');
  42.     month = fecha.getMonth();
  43.     date = fecha.getDate();
  44.  
  45.     f1 = new Date(fecha.getFullYear(),0,1,0,0); alert('f1 vale' + f1);
  46.     dayf1 = f1.getDay();
  47.     if(dayf1 == 0) dayf1 = 7;
  48.  
  49.     f2 = new Date(fecha.getFullYear(),month,date,0,0);
  50.     dayf2 = f2.getDay();
  51.     if(dayf2 == 0) dayf2 = 7;
  52.  
  53.     if(month == 0 && date == 1 && dayf2 > 4 || month == 0 && date == 2 && dayf2 > 5 || month == 0 && date == 3 && dayf2 == 7)
  54.     {
  55.         f1 = new Date(fecha.getFullYear()-1,0,1,0,0);
  56.         f2 = new Date(fecha.getFullYear()-1,11,31,0,0);
  57.         dayf1 = f1.getDay();
  58.         if(dayf1 == 0) day = 7;
  59.     }
  60.     if(month == 11 && date == 31 && dayf2 < 4 || month == 11 && date == 30 && dayf2 < 3 || month == 11 && date == 29 && dayf2 == 1)
  61.     return(1);
  62.  
  63.     if(dayf1 <5)
  64.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7) + 1);
  65.     else
  66.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7));
  67.     return FW;
  68. }
  69.  
  70. function calculaFechas() { 
  71.     alert('Entra en calculaFechas');
  72.     //var valor = document.getElementById('E_HIST_FUR').value;
  73.     //document.getElementById('E_HIST_FUR_CORRE').value=valor;
  74.     var valor = document.getElementById('E_HIST_FUR_CORRE').value;
  75.     fragmentoFecha = valor.split('/');
  76.  
  77.     var d = eliminarCerosIzq(fragmentoFecha[0]);
  78.     var m = fragmentoFecha[1];
  79.     var numMes = parseInt(m);
  80.     numMes -= 1;
  81.     var a = fragmentoFecha[2];
  82.  
  83.     fecha = new Date(a, numMes, d); //año, mes,dia
  84.     fecha2 = new Date();   
  85.     //FW() y FW2() sin iguales, per si llamo 2 veces a la misma, peta
  86.     var i = FW(fecha);      // <-- FALLA AQUI, la segunda vez que pasa
  87.     var j = FW2(fecha2);
  88.     var dif_dias = fecha2.getDay() - fecha.getDay();
  89.     if(dif_dias < 0) dif_dias += 7;
  90.    
  91.     var dif_semanas = parseInt(i) - parseInt(j)
  92.    
  93.     if (dif_semanas < 0) {  
  94.         dif_semanas += 52;
  95.     }  
  96.     var dd = fecha2.getDate() - fecha.getDate();
  97.     var restaMes = fecha2.getMonth() - fecha.getMonth();
  98.    
  99.     if (restaMes==0 && dd>0 && dd < 7){
  100.         dif_semanas = 0;
  101.     }
  102.     alert('Asigna valor al campo EG');
  103.     document.getElementById('E_HIST_EG').value = dif_semanas + " semana/s y " + dif_dias + " día/s";
  104.    
  105.     var mili=fecha.getTime();
  106.     fecha.setTime(parseInt(mili+24192000000)); //280 dias en milisegundos
  107.  
  108.     //corregir formato fecha
  109.     var fd = fecha.getDate();
  110.     var fd_cad = '' + fd;
  111.     if(fd_cad.length == 1) fd_cad = "0" + fd_cad;
  112.     var fm = fecha.getMonth();
  113.     var fm_cad = '' + fm;
  114.     if(fm_cad.length == 1) fm_cad = "0" + fm_cad;
  115.     alert('Asigna valor al campo FPP');
  116.     document.getElementById('E_HIST_FPP').value = fd_cad + "/" + fm_cad + "/" + fecha.getYear();    
  117. }
  118.  
  119. function esFecha(p_fecha) {
  120.     return true;
  121. }

Código HTML:
Ver original
  1. <div class="formulario">
  2. <table border=0 cellpadding=2 cellspacing=0 align=center>
  3.     <form name='F1' method=post>
  4.         <tr>
  5.          
  6.           <td colspan="2">&nbsp;&nbsp;&nbsp;- EG:&nbsp;&nbsp;
  7.                 <input name='E_HIST_EG' value='' readonly="readonly" size='40' maxlength=80 title='' tabindex=50>
  8.           </td>              
  9.           <td colspan="2">&nbsp;&nbsp;&nbsp;- FPP:&nbsp;&nbsp;
  10.                 <INPUT NAME='E_HIST_FPP' VALUE='' readonly="readonly" SIZE='40' maxlength=80 TITLE='' tabindex=60 onfocus='select()' onchange='if(esFecha("E_HIST_FPP")){return true;} else return false;'>&nbsp;
  11.           </td>
  12.         </tr>
  13.         <tr>
  14.           <td colspan="5">&nbsp;&nbsp;&nbsp;- FUR corregida:&nbsp;&nbsp;
  15.                 <INPUT NAME='E_HIST_FUR_CORRE' onPropertyChange='calculaFechas()' VALUE='' SIZE='10' maxlength=80 TITLE='' tabindex=70 onfocus='select()' onchange='if(esFecha("E_HIST_FUR_CORRE")){return true;} else return false;'>&nbsp;
  16.           </td>
  17.         </tr>
  18.     </form>
  19. </div>
  20. </body>

Etiquetas: esperaba, funcion
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 12:22.