IE 中的日期建構函式故障:跨瀏覽器比較
在Web 開發領域,JavaScript 的日期建構函式已被證明是一個尋求操縱日期的開發人員的可靠盟友。然而,在主流瀏覽器中使用此建構函式時,觀察到了一個奇怪的現象。雖然 Firefox 和 Chrome 很樂意接受 Date 的功能,但眾所周知,Internet Explorer 會遇到一些問題,對於某些日期操作會傳回 NaN(非數位)。
為了解開這個謎團,讓我們深入研究一下觀察到的具體問題開發人員製作日曆。他們從 PHP 格式的日期字串 ('m, d, Y') 構建的日期在 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 可以輕鬆理解的格式。一個方便的選擇是利用 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中文網其他相關文章!