ホームページ > 記事 > ウェブフロントエンド > JavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?
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 サイトの他の関連記事を参照してください。