【问题标题】:Nan Undefined Nan Error (Firefox, Edge and Safari)Nan Undefined Nan 错误(Firefox、Edge 和 Safari)
【发布时间】:2015-12-29 12:38:51
【问题描述】:

我制作了这个 javascript 函数来计算输入日期后的一些日期。这是脚本:

processDateInput: function() {
    if(!this.dayInputVal || !this.monthInputVal || !this.yearInputVal || (this.$.dayInputCon.invalid || this.$.monthInputCon.invalid || this.$.yearInputCon.invalid)) {
    this.$.dateInputErrToast.show();
    return;
}
    var monthNames = ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"];
    var date = new Date(this.yearInputVal + "-" + parseInt(this.monthInputVal) + "-" + parseInt(this.dayInputVal)).getTime();
    var date1 = new Date(date - 24*60*60*1000*280);
    var date2 = new Date(date - 24*60*60*1000*224);
    var date3 = new Date(date - 24*60*60*1000*175);
    var date4 = new Date(date - 24*60*60*1000*105);
    var date5 = new Date(date - 24*60*60*1000*56);
    var date6 = new Date(date - 24*60*60*1000*140);
    this.date1 = date1.getDate() + " " + monthNames[date1.getMonth() ]+ " " + date1.getFullYear();
    this.date2 = date2.getDate() + " " + monthNames[date2.getMonth() ]+ " " + date2.getFullYear();
    this.date3 = date3.getDate() + " " + monthNames[date3.getMonth() ]+ " " + date3.getFullYear();
    this.date4 = date4.getDate() + " " + monthNames[date4.getMonth() ]+ " " + date4.getFullYear();
    this.date5 = date5.getDate() + " " + monthNames[date5.getMonth() ]+ " " + date5.getFullYear();
    this.date6 = date6.getDate() + " " + monthNames[date6.getMonth() ]+ " " + date6.getFullYear();
    this.$.dateResult.opened = true;
}

计算的日期显示在 html 槽跨度中。该脚本在 Chrome 中运行良好,但当我在 Firefox、Safari 或 Edge 中使用该脚本时,它会返回:NaN Undefined NaN。我找不到是什么原因造成的。

【问题讨论】:

  • 请发布控制台截图
  • this.yearInputValthis.monthInputValthis.dayInputVal的值是多少?

标签: javascript html google-chrome date firefox


【解决方案1】:

如果您的日期格式无效,就会发生这种情况。

我注意到您在月份和日期输入中使用了parseInt,这意味着您将获得类似2016-2-6 的结果,这不是new Date 识别的有效格式。相反,您需要确保将您的号码填入2016-02-06,这应该可以正常工作。

或者,尝试:

var date = new Date(this.yearInputVal, this.monthInputVal-1, this.dayInputVal).getTime();

这应该采用年-月-日组合并为您提供正确的结果。

【讨论】:

  • 荣誉(例如,+1)作为替代方案,没有必要为此通过字符串(并且有很多理由不这样做)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2016-02-16
  • 2016-06-27
  • 2014-04-30
  • 2015-06-26
相关资源
最近更新 更多