我有一个时间比较,在一个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");
};
答案 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()
函数