ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?

JavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-20 13:32:29462ブラウズ

What Causes NaN Errors in Internet Explorer When Using JavaScript's Date Constructor?

IE の Date コンストラクターの誤動作: ブラウザー間の比較

Web 開発の分野では、JavaScript の Date コンストラクターは、日付を操作しようとする開発者にとって頼もしい味方です。ただし、主要なブラウザーでこのコンストラクターを使用すると、興味深い現象が観察されています。 Firefox と Chrome は Date の機能を喜んで採用していますが、Internet Explorer は、特定の日付操作で NaN (Not-a-Number) を返してつまずくことが知られています。

この謎を解明するために、によって観察された特定の問題を詳しく掘り下げてみましょう。カレンダーを作成する開発者。 PHP 形式の日付文字列 ('m, d, Y') からの Date 構築は Firefox と Chrome では問題なく機能しましたが、IE は NaN 癇癪を起こすことを主張しました。

日付構築問題

<code class="javascript">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>');
}</code>

問題の根本は日付形式にあります。 IE は日付をネイティブ形式 ('YYYY-MM-DD') で解析できますが、このコードで使用されている 'm, d, Y' 形式に直面すると困難になります。

解決策:日付形式の標準化

ブラウザ間での互換性を確保するには、日付の構築で使用される日付形式を標準化することが不可欠です。推奨されるアプローチは、日付文字列を IE が容易に理解できる形式に変換することです。便利なオプションの 1 つは、split() メソッドを利用して日付文字列を分析し、個々のコンポーネントを Date コンストラクターに渡すことです。

たとえば、MySQL の日付時刻/タイムスタンプ フィールドが「2011-」のような文字列を返すと仮定します。 08-03 09:15:11" の場合、次のコード スニペットは IE との互換性のために形式を正規化します:

<code class="javascript">var dateStr="2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);</code>

このアプローチを採用することで、日付操作がすべての主要なブラウザーで適切に動作することを保証できます。コードに大損害を与える可能性のある不可解な NaN エラーを排除します。

以上がJavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。