2016-08-09 14 views
0

Ich habe einen Zeitvergleich, der in einer If-Anweisung eine Zeile versteckt oder eingeblendet auf der Basis der Zeit in der Zeile und der Uhrzeit anzeigt und aus irgendeinem Grund immer true zurückgibt.Der Zeitvergleich gibt immer true zurück

Die volle Funktion ist:

$(function togglePast() { 
      $(document) 
       .on('click', 
        '#ctl00_content_hidePast', 
        function (e) { 
         e.preventDefault(); 
         var dt = new Date($.now() - 30 * 60000); 
         var time = dt.getHours() + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes() + ":" + dt.getSeconds(); 
         var state = $("#ctl00_content_hdnPastBookingToggle").val(); 
         $("td.bgtime") 
          .each(function() { 
           var bookingTime = ($(this).text().split(':')); 
           var d = new Date(); 
           d.setHours(+bookingTime[0]); 
           d.setMinutes(bookingTime[1]); 

           if ($(d) > time) { 
            var timeRow = $(this).parent(); 
            $(timeRow).toggle("slow"); 
           }; 
          }); 
         if (state === "0") { 
          $("#ctl00_content_hdnPastBookingToggle").val("1"); 
         } else if (state === "1") { 
          $("#ctl00_content_hdnPastBookingToggle").val("0"); 
         }; 
         return false; 
        }); 
     }); 

und die spezifische Vergleich, der immer wahr ist:

if ($(d) > time) { 
    var timeRow = $(this).parent(); 
    $(timeRow).toggle("slow"); 
}; 
+0

http://momentjs.com/ kann für Ihr Projekt interessant sein – Weedoze

+1

warum '$ (d)'? Sie müssen es nicht in ein jQuery-Objekt konvertieren. Auch sollte es wie 'if (d> dt)' sein, da Ihre 'Zeit' ein String-Objekt ist. – vijayP

+0

Kann nichts extra in Plugin-Weise, so muss ich mit dem arbeiten, was ich habe –

Antwort

1

Könnten Sie bitte versuchen Sie diesen Code:

$(function togglePast() { 
    $(document) 
    .on('click', 
     '#ctl00_content_hidePast', 
     function(e) { 
     e.preventDefault(); 
     var dt = new Date($.now() - 30 * 60000); 
     var time = dt.getHours() + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes() + ":" + dt.getSeconds(); 
     var state = $("#ctl00_content_hdnPastBookingToggle").val(); 
     $("td.bgtime") 
      .each(function() { 
      var bookingTime = ($(this).text().split(':')); 
      var d = new Date(); 
      d.setHours(+parseInt(bookingTime[0])); //converting to integer from string 
      d.setMinutes(parseInt(bookingTime[1])); //converting to integer from string 

      if (d > dt) { 
       var timeRow = $(this).parent(); 
       $(timeRow).toggle("slow"); 
      }; 
      }); 
     if (state === "0") { 
      $("#ctl00_content_hdnPastBookingToggle").val("1"); 
     } else if (state === "1") { 
      $("#ctl00_content_hdnPastBookingToggle").val("0"); 
     }; 
     return false; 
     }); 
}); 

Während die Verwendung von Date.setHours() müssen Sie den integer Wert übergeben; so verwenden wir parseInt() Funktion