Heim  >  Artikel  >  Web-Frontend  >  Was verursacht NaN-Fehler im Internet Explorer, wenn der Datumskonstruktor von JavaScript verwendet wird?

Was verursacht NaN-Fehler im Internet Explorer, wenn der Datumskonstruktor von JavaScript verwendet wird?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 13:32:29465Durchsuche

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

Fehlfunktionen des Datumskonstruktors im IE: Ein browserübergreifender Vergleich

Im Bereich der Webentwicklung hat sich der Datumskonstruktor von JavaScript als ein Problem erwiesen treuer Verbündeter von Entwicklern, die Daten manipulieren möchten. Bei der Verwendung dieses Konstruktors in allen gängigen Browsern wurde jedoch ein merkwürdiges Phänomen beobachtet. Während Firefox und Chrome die Funktionalität von Date freudig nutzen, stolpert Internet Explorer bekanntermaßen und gibt für bestimmte Datumsoperationen NaN (Not-a-Number) zurück.

Um dieses Rätsel zu lösen, wollen wir uns mit dem spezifischen Problem befassen, das von beobachtet wurde Ein Entwickler, der einen Kalender erstellt. Ihre Datumskonstruktion aus einer PHP-formatierten Datumszeichenfolge ('m, d, Y') funktionierte in Firefox und Chrome einwandfrei, aber IE bestand darauf, NaN-Wutanfälle auszulösen.

Das Datumskonstruktionsproblem

<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>

Die Wurzel des Problems liegt im Datumsformat. Während IE Datumsangaben in seinem nativen Format („JJJJ-MM-TT“) analysieren kann, hat er Probleme, wenn er mit dem in diesem Code verwendeten Format „m, d, Y“ konfrontiert wird.

Die Lösung: Standardisierung des Datumsformats

Um die Kompatibilität zwischen Browsern sicherzustellen, ist es unbedingt erforderlich, das bei der Datumskonstruktion verwendete Datumsformat zu standardisieren. Der empfohlene Ansatz besteht darin, die Datumszeichenfolge in ein Format zu konvertieren, das der IE problemlos verstehen kann. Eine bequeme Option besteht darin, die Methode split() zu nutzen, um die Datumszeichenfolge zu zerlegen und dann die einzelnen Komponenten an den Datumskonstruktor zu übergeben.

Angenommen, ein MySQL-Datums-/Zeitstempelfeld gibt beispielsweise eine Zeichenfolge wie „2011-“ zurück. 08-03 09:15:11“, würde der folgende Codeausschnitt das Format für IE-Kompatibilität normalisieren:

<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>

Durch die Übernahme dieses Ansatzes können Sie sicherstellen, dass Ihre Datumsoperationen in allen gängigen Browsern gut funktionieren , wodurch unerklärliche NaN-Fehler beseitigt werden, die verheerende Auswirkungen auf Ihren Code haben können.

Das obige ist der detaillierte Inhalt vonWas verursacht NaN-Fehler im Internet Explorer, wenn der Datumskonstruktor von JavaScript verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn