如何在 JavaScript 中禁用以前的日期
how to disable previous dates in JavaScript
我正在尝试在 JavaScript 中创建一个日历,并且我正在尝试从今天开始禁用前一天。
for (var c = 0; c < 42 - r; c++) {
var v = e[c].day;
var m = g(new Date(t, n - 1, v))
? `<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">`
: z(new Date(t, n - 1, v))
? `<div class="past">`
: `<div id="${v}/${n}/${t}" type="button" onclick="addRow(this)">`;
l.append(
m +
"" +
'<span class="month">' +
i[n - 1] +
"</span>" +
"" +
v +
"</div>"
);
}
所以这里 v 是一天,n 是一个月,t 是一年。这里是 g 和 z 函数:
function g(e) {
return y(new Date()) == y(e);
}
function z(e) {
return y(new Date()) > y(e);
}
function y(e) {
return e.getFullYear() + "/" + (e.getMonth() + 1) + "/" + e.getDate();
}
所以我希望以前的日期是这样的:<div class="past">
,今天是这样的:<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">
,未来是这样的:<div id="${v}/${n}/${t}" type="button" onclick="addRow(this)">
但我得到的是 <div class="past">
、<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">
、<div class="past">
那么你认为我哪里做错了?
问题是当你进行字符串比较时,“2021/8/9”大于“2021/8/10”(9 大于 1)。您需要将这些 month/day 值正确地用零填充 (2021/08/09) 与 (2021/08/10)。
尝试
function y(e) {
return e.getFullYear()
+ "/" + String(e.getMonth() + 1).padStart(2, "0")
+ "/" + String(e.getDate()).padStart(2, "0");
}
我正在尝试在 JavaScript 中创建一个日历,并且我正在尝试从今天开始禁用前一天。
for (var c = 0; c < 42 - r; c++) {
var v = e[c].day;
var m = g(new Date(t, n - 1, v))
? `<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">`
: z(new Date(t, n - 1, v))
? `<div class="past">`
: `<div id="${v}/${n}/${t}" type="button" onclick="addRow(this)">`;
l.append(
m +
"" +
'<span class="month">' +
i[n - 1] +
"</span>" +
"" +
v +
"</div>"
);
}
所以这里 v 是一天,n 是一个月,t 是一年。这里是 g 和 z 函数:
function g(e) {
return y(new Date()) == y(e);
}
function z(e) {
return y(new Date()) > y(e);
}
function y(e) {
return e.getFullYear() + "/" + (e.getMonth() + 1) + "/" + e.getDate();
}
所以我希望以前的日期是这样的:<div class="past">
,今天是这样的:<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">
,未来是这样的:<div id="${v}/${n}/${t}" type="button" onclick="addRow(this)">
但我得到的是 <div class="past">
、<div id="${v}/${n}/${t}" class="today" type="button" onclick="addRow(this)">
、<div class="past">
那么你认为我哪里做错了?
问题是当你进行字符串比较时,“2021/8/9”大于“2021/8/10”(9 大于 1)。您需要将这些 month/day 值正确地用零填充 (2021/08/09) 与 (2021/08/10)。
尝试
function y(e) {
return e.getFullYear()
+ "/" + String(e.getMonth() + 1).padStart(2, "0")
+ "/" + String(e.getDate()).padStart(2, "0");
}