我在javascript中有这个函数,它应该在HTML和disable中生成一个表。选择具有日期之前的日期的id的元素。它似乎工作得很好,除了偶尔,并不总是,它留下一些选择而不禁用。任何人都可以告诉我为什么会发生这种情况?我完全卡住了,请帮忙!!!
function llenaDatosTabla(){
_fecha = $("#fechaFinal").val();
_tiendaId = $("#cajaOp_tienda").val();
var errorcampos = 0;
if(_tiendaId == 0){
mensajePop("Introduzca una tienda");
errorcampos = 1;
}else if(_fecha == "" || _fecha==null){
mensajePop("Introduzca una fecha");
errorcampos = 1;
}
if(errorcampos==0){
lightboxLoading("loadingData","divLoading");
invocarJSONServiceAction('consultaTurnoXTiendaXFechaGuardadaXPuesto', {
tiendaId: _tiendaId,
fecha: _fecha},'rh_datosTurnosEmp',
null,
null);
rh_datosTurnosEmp =function(data){
if (data.resultado!=null && data.resultado!=undefined){
datastring = "<table id='dataHorarios'>";
if(data.resultado.indicadorGuardado ==0){
$("#letreroguardados").html("Los horarios NO han sido guardados");
}
else{
$("#letreroguardados").html("");
}
var subtitran = "" + data.resultado.fechaInicial + " - " + data.resultado.fechaFinal;
$("#subtitran").html(subtitran);
lideresxtienda = 0;
var extcount = 0;
var descont = 0;
adeshabilitar = new Array();
for (var i=0;i<data.resultado.turnosXUsuario.length;i++){
var rowcolor = i%2;
var rowstyle="";
var turnos = data.resultado.turnosXUsuario;
var hoy = new Date();
var fi = data.resultado.fechaInicial.split("/");
var finif = new Date(parseInt(fi[2]), parseInt(fi[1])-1, parseInt(fi[0]));
var options = "";
var turnosAplicables = new Array();
var tipoEmp = data.resultado.turnosXUsuario[i].puestoId;
if(rowcolor==0){
rowstyle = "rblanco";
}
else{
rowstyle="rgris";
}
if(tipoEmp == 1){
turnosAplicables = turnosOp;
}else if(tipoEmp == 2){
turnosAplicables = turnosEn;
lideresxtienda++;
}else if(tipoEmp == 3){
turnosAplicables = turnosLi;
lideresxtienda++;
}else{
turnosAplicables = turnosXId;
}
options = "<option value=0> Sin Definir</option>";
for(var j=0; j<turnosAplicables.length; j++){
options = options + "<option value=" + turnosAplicables[j][0] + ">" + turnosAplicables[j][1] + "</option>";
}
var fechalunes = new Date();
fechalunes.setDate(finif.getDate());
var cllunes = "";
var fechalunesf = ("0" + fechalunes.getUTCDate()).slice(-2)+"/"+("0" + (fechalunes.getUTCMonth()+1)).slice(-2) +"/"+ fechalunes.getUTCFullYear() ;
if(fechalunes<=hoy){cllunes= "disabled";}
var fechamartes = new Date();
fechamartes.setDate(finif.getDate() + 1);
var clmartes = "";
var fechamartesf = ("0" + fechamartes.getUTCDate()).slice(-2)+"/"+("0" + (fechamartes.getUTCMonth()+1)).slice(-2) +"/"+ fechamartes.getUTCFullYear() ;
if(fechamartes<=hoy){clmartes= "disabled";}
var fechamiercoles = new Date();
fechamiercoles.setDate(finif.getDate() + 2);
var clmiercoles = "";
var fechamiercolesf = ("0" + fechamiercoles.getUTCDate()).slice(-2)+"/"+("0" + (fechamiercoles.getUTCMonth()+1)).slice(-2) +"/"+ fechamiercoles.getUTCFullYear() ;
if(fechamiercoles<=hoy){clmiercoles= "disabled"; }
var fechajueves = new Date();
fechajueves.setDate(finif.getDate() + 3);
var cljueves = "";
var fechajuevesf = ("0" + fechajueves.getUTCDate()).slice(-2)+"/"+("0" + (fechajueves.getUTCMonth()+1)).slice(-2) +"/"+ fechajueves.getUTCFullYear() ;
if(fechajueves<=hoy){cljueves= "disabled";}
var fechaviernes = new Date();
fechaviernes.setDate(finif.getDate() + 4);
var clviernes = "";
var fechaviernesf = ("0" + fechaviernes.getUTCDate()).slice(-2)+"/"+("0" + (fechaviernes.getUTCMonth()+1)).slice(-2) +"/"+ fechaviernes.getUTCFullYear() ;
if(fechaviernes<=hoy){clviernes= "disabled";}
var fechasabado = new Date();
fechasabado.setDate(finif.getDate() + 5);
var clsabado = "";
var fechasabadof = ("0" + fechasabado.getUTCDate()).slice(-2)+"/"+("0" + (fechasabado.getUTCMonth()+1)).slice(-2) +"/"+ fechasabado.getUTCFullYear() ;
if(fechasabado<=hoy){clsabado= "disabled"}
var fechadomingo = new Date();
fechadomingo.setDate(finif.getDate() + 6);
var cldomingo = "";
var fechadomingof = ("0" + fechadomingo.getUTCDate()).slice(-2)+"/"+("0" + (fechadomingo.getUTCMonth()+1)).slice(-2) +"/"+ fechadomingo.getUTCFullYear() ;
if(fechadomingo<=hoy){cldomingo= "disabled";}
datastring = datastring + "<tr class=" + rowstyle +"><td class='connom' id='"+ turnos[i].usuarioId +"'>" + turnos[i].nombre + "</td>"
+ "<td class='conpues' id ='"+turnos[i].puestoId+"'>" + turnos[i].puesto + "</td>"
+ "<td class='consele ' id='"+ fechalunesf + "'><select "+ cllunes +" id='lunes"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechamartesf + "'><select "+ clmartes +" id='martes"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechamiercolesf + "'><select "+ clmiercoles +" id='miercoles"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechajuevesf + "'><select "+ cljueves +" id='jueves"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechaviernesf + "'><select "+ clviernes +" id='viernes"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechasabadof + "'><select "+ clsabado +" id='sabado"+turnos[i].usuarioId+"'>" + options + "</select></td>"
+ "<td class='consele ' id='"+ fechadomingof + "'><select "+ cldomingo +" id='domingo"+turnos[i].usuarioId+"'>" + options + "</select></td>";
setters[extcount] = new Array();
setters[extcount][0] = "#lunes"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[0].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#martes"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[1].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#miercoles"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[2].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#jueves"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[3].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#viernes"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[4].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#sabado"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[5].turnoId; extcount++;
setters[extcount] = new Array();
setters[extcount][0] = "#domingo"+turnos[i].usuarioId;
setters[extcount][1] = turnos[i].turnoXFecha[6].turnoId; extcount++;
}
datastring = datastring + "</tr></table> ";
$("#dataTHorarios").html(datastring);
for(var i = 0; i< setters.length; i++){
$(setters[i][0]).val(setters[i][1]);
}
if (logOcultaLoading>0)
ocultaLoadingPers('loadingData');
}else{
if (logOcultaLoading>0)
ocultaLoadingPers('loadingData');
}
};
}
}
答案 0 :(得分:0)
见Add days to JavaScript Date。最佳答案显示.setDate在某些情况下不可靠。
因此,应该从
更改每天的代码var fechadomingo = new Date();
fechadomingo.setDate(finif.getDate() + 6);
到
var fechadomingo = new Date(finif.getTime());
fechadomingo.setDate(finif.getDate() + 6);