时间比较总是返回true

时间:2016-08-09 08:47:34

标签: javascript jquery

我有一个时间比较,在一个If语句中根据行中的时间和当前时间来切换隐藏或隐藏的行,并且由于某种原因,它总是返回true。

完整的功能是:

 $(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;
                    });
        });

始终如一的具体比较是:

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

1 个答案:

答案 0 :(得分:1)

请你试试这段代码:

$(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;
      });
});

使用Date.setHours()时,您需要传递integer值;所以我们正在使用parseInt()函数