当前位置: 首页 > 面试题库 >

日期构造函数在IE中返回NaN,但在Firefox和Chrome中有效

漆雕稳
2023-03-14
问题内容

我正在尝试用JavaScript构建一个小日历。我的日期在Firefox和Chrome中运行良好,但是在IE中,日期函数返回了NaN。

这是函数:

function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d<7;d++){
        headerDates += '<th>' + newDate + '</th>';
        newDate.setDate(newDate.getDate()+1);
    }

    jQuery('div#headerDates').html('<table><tr>'+headerDates+'</tr></table>');
}

dateText是当前星期的星期一,实际上是在php中以“ m,d,Y”格式设置的,例如"02, 01, 2010"


问题答案:

Date构造函数接受任何值。如果参数的原始[[value]]是数字,则创建的日期具有该值。如果原始[[value]]为String,则规范仅保证Date构造函数和parse方法能够解析Date.prototype.toString和Date.prototype.toUTCString()的结果。

设置日期的一种可靠方法是构造一个日期并使用setFullYearsetTime方法。

ECMA-262 r3没有定义任何日期格式。将字符串值传递给Date构造函数或Date.parse具有与实现相关的结果。最好避免。

编辑: 来自comp.lang.javascript常见问题解答的条目是:扩展ISO 8601本地日期格式YYYY-MM- DD可以通过Date以下方式解析为:

/**Parses string formatted as YYYY-MM-DD to a Date object.
 * If the supplied string does not match the format, an 
 * invalid Date (value NaN) is returned.
 * @param {string} dateStringInRange format YYYY-MM-DD, with year in
 * range of 0000-9999, inclusive.
 * @return {Date} Date object representing the string.
 */

  function parseISO8601(dateStringInRange) {
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        date = new Date(NaN), month,
        parts = isoExp.exec(dateStringInRange);

    if(parts) {
      month = +parts[2];
      date.setFullYear(parts[1], month - 1, parts[3]);
      if(month != date.getMonth() + 1) {
        date.setTime(NaN);
      }
    }
    return date;
  }


 类似资料:
  • 问题内容: 我为一个朋友做了一些网络工作,帮助了他。他需要的一部分是在他的站点上更改几段文字的简单方法。与其让他编辑HTML,我决定提供一个带有消息的XML文件,然后我使用jQuery将它们从文件中拉出并插入到页面中。 它的效果非常好…在Firefox和Chrome中,在IE7中效果不佳。我希望你们中的一个能告诉我原因。我做了一个公平的但谷歌搜索,但是找不到我想要的东西。 这是XML: 这是我的j

  • 问题内容: 到目前为止,我在构造函数中有一个类 的功能是在数据库中查找特定的电子邮件地址。当我将标识符设置为某些电子邮件时,我确定它不在数据库中;第一个IF被传递,并转到第一个ELSE。这里的构造函数应该返回FALSE; 但是,它返回具有所有NULL值的类的对象! 我如何防止这种情况?谢谢 编辑: 谢谢大家的回答。那太快了!我看到OOP方式是抛出异常。因此,抛出一个问题,我的问题发生了变化,我应该

  • 我正试图给我的图像一个风景或肖像类在一个Wordpress图像库通过测量图像的尺寸负载。该代码在Safari中工作,但Firefox返回0像素的宽度和高度,Chrome有时会正确加载它们,有时则不会。我很困惑,有人能帮我吗?

  • 问题内容: 我有一些可在IE中运行的JavaScript代码,其中包含以下内容: 但是,似乎’innerText’属性在Firefox中不起作用。是否有与Firefox相当的产品?还是可以使用更通用的跨浏览器属性? 问题答案: Firefox使用textContent属性。 我猜想Safari和Opera也支持此属性。

  • 我不明白为什么下面的函数返回NaN,甚至答案不应该是NaN。我试着搜索类似的问题,但大多数是在其他编程语言中,我无法理解。 提前谢了。

  • 问题内容: 这是我的代码,用于在用户忘记密码的情况下重置用户密码。数据通过AJAX请求发送到PHP代码,PHP代码根据输入的有效性简单地回显“ Y”或“ N”。 问题是,AJAX调用在Firefox 19和IE 9中不起作用。我没有在其他版本的IE中尝试过。AJAX调用可在chrome和safari中完美运行。有人遇到过同样的问题吗?有人可以帮忙吗? 问题答案: 您必须使用事件对象作为事件处理程序