提问人:mmc 提问时间:3/16/2023 最后编辑:mmc 更新时间:3/16/2023 访问量:21
在 JavaScript 的条件函数中更改一个变量参数,使其他参数保持不变
Change One Variable Argument Keeping Other Arguments Constant Within Conditional Function in JavaScript
问:
选举于 2023 年 3 月 14 日举行。变量“FLM23”使用我在网上找到的 nthWeekdayOfMonth 函数设置该日期,该函数将任何月份的第 n 天计算为日期。我想让AddOneYear函数首先检查FLM23的日期和时间是否早于今天的日期和时间。如果是这样,我希望它使用 nthWeekdayOfMonth 将下一个年度选举日期重新分配给“FLM23”,只需将 1 添加到年份即可。如果该功能正常工作,它将准确打印“Tue Mar 12 2024 07:00:00 GMT-0400 (Eastern Daylight Time)”。
我包括了我尝试过的两种方法,但显然必须注释掉一种方法来测试脚本。首先,我创建了一个名为 NextYear 的变量,用于 AddOneYear 函数的 nthWeekdayOfMonth 函数,但我无法简单地更改年份,同时保持 FLM23 的其他参数与其原始变量调用相同。其次,我尝试将 today 变量中的 getFullYear 放在参数中,但这不起作用。感谢您的帮助!
function print(s) {
document.write(s + '<br />');
}
function add(s) {
s.setHours(s.getHours() + 7);}
//Attempted Method 1
function AddOneYear(s) {
var today = new Date();
if (s <= today) {
//The following two lines are causing the issues
var NextYear = new Date().getFullYear() + 1;
s = nthWeekdayOfMonth(s, s, new Date(NextYear, s));
}
}
//Attempted Method 2
function AddOneYear(s) {
var today = new Date();
if (s <= today) {
//The following line is causing the issues
s = nthWeekdayOfMonth(s, s, new Date(today.getFullYear() + 1, s));
}
}
function nthWeekdayOfMonth(weekday, n, date) {
var count = 0,
idate = new Date(date.getFullYear(), date.getMonth(), 1);
idate.setHours(idate.getHours() + 7);
while (true) {
if (idate.getDay() === weekday) {
if (++count == n) {
break;
}
}
idate.setDate(idate.getDate() + 1);
}
return idate;
}
// Second Tuesday of March 2023.
var FLM23 = nthWeekdayOfMonth(2, 2, new Date(2023, 2));
AddOneYear(FLM23);
print(FLM23);
答: 暂无答案
评论