【问题标题】:TypeError: *.getMonth is not a function类型错误:*.getMonth 不是函数
【发布时间】:2014-03-14 20:15:13
【问题描述】:

我正在尝试构建一个 javascript 函数,该函数将自动填充日历的 14 天,其中包含最后一个日期之前的日期,该日期由日期选择器选择。到目前为止,我的代码是:

function filldates() {

datepicked = document.getElementById("period-ending").value;
s = datepicked.split('/');
enddate = new Date(s[2], s[0], s[1]);
date1 = enddate.setDate(enddate.getDate()-14);
day1 = date1.getMonth() + 1;
month1 = date1.getDate();
var firstday = day1 + '/' + month1;
document.getElementById("date-1").value = firstday;
}

但是开发人员的控制台一直告诉我 date1.getMonth 不是一个函数。我很困惑,因为我一直在查看的所有教程和示例都基于以下内容:“var today = new Date(); var month = today.getMonth() + 1;”

这是一个实现问题吗?

【问题讨论】:

  • 您需要将var 用于所有您的局部变量

标签: javascript jquery datepicker


【解决方案1】:

setDate() 函数会改变其上下文日期。它不会返回新的 Date 实例。

如果您想创建一个比另一个日期早几天的新日期实例:

function daysAfter(d, days) {
  var nd = new Date(d.getTime());
  nd.setDate(d.getDate() + days);
  return nd;
}

如果你有一个日期,你可以像这样在它之后的 14 天创建一个日期:

var someDate = ... whatever ... ;
var fourteenDaysAfter = daysAfter(someDate, 14);

然后您可以使用.getMonth().getDate() 访问器来执行您想要的任何格式设置。请记住,JavaScript 中的月份是从零开始编号的。

编辑日期之前一个日期只是传递一个负数。

【讨论】:

  • 我无法理解您的回答,因为我只是不确定应该从哪里获得期末日期信息。用户使用 datepicker 选择支付期的最后一天(“期末”),我使用“enddate = new Date(s[2], s[0], s[1]) 将其转换为日期;"但你的方法完全不同。
  • @JasonBoyce 该函数生成一个距离给定日期若干天的日期。如果您想要 14 天前的日期(这似乎过于简化了工资单,但无论如何),您将传递结束日期和 -14,该函数返回一个表示该日期前 14 天的新日期对象。
  • 感谢您的澄清,我只需要几天时间来弄清楚我应该将生成的日期放在哪里工作。感谢您的帮助!
猜你喜欢
  • 2016-02-26
  • 2013-04-01
  • 2016-03-06
  • 2018-04-28
  • 2019-02-14
  • 2021-10-02
  • 2021-10-30
  • 2018-11-22
相关资源
最近更新 更多