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!