Javascript 用于禁用不总是工作的选定元素的功能

Javascript 用于禁用不总是工作的选定元素的功能,javascript,jquery,html,Javascript,Jquery,Html,我在javascript中有这个函数,它应该在HTML中生成一个表并禁用。选择id日期早于teoday的图元。它似乎工作得很好,只是偶尔(并非总是)会保留一些选择而不禁用。有人能告诉我为什么会发生这种事吗?我完全卡住了,请帮帮我 function llenaDatosTabla(){ _fecha = $("#fechaFinal").val(); _tiendaId = $("#cajaOp_tienda").val(); var errorcampos = 0

我在javascript中有这个函数,它应该在HTML中生成一个表并禁用。选择id日期早于teoday的图元。它似乎工作得很好,只是偶尔(并非总是)会保留一些选择而不禁用。有人能告诉我为什么会发生这种事吗?我完全卡住了,请帮帮我

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'); 
            } 
        }; 
    } 



}
看。上面的答案显示.setDate在某些情况下是不可靠的

因此,每天的代码应该从

var fechadomingo = new Date(); 
fechadomingo.setDate(finif.getDate() + 6); 


你应该使用一个数组和一个for循环,而不是在一周中的每一天用7组不同的变量重复相同的代码。虽然这没有解决问题,但问题确实存在于日期初始化中。我改为使用moment.js库修复了它。
var fechadomingo = new Date(finif.getTime()); 
fechadomingo.setDate(finif.getDate() + 6);