在 JavaScript 的条件函数中更改一个变量参数,使其他参数保持不变

Change One Variable Argument Keeping Other Arguments Constant Within Conditional Function in JavaScript

提问人:mmc 提问时间:3/16/2023 最后编辑:mmc 更新时间:3/16/2023 访问量:21

问:

选举于 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);

JavaScript 函数 参数传递

评论


答: 暂无答案