Rumah > Artikel > hujung hadapan web > Apa yang Menyebabkan Ralat NaN dalam Internet Explorer Apabila Menggunakan Pembina Tarikh JavaScript?
Date Constructor Malfunctions in IE: A Cross-Browser Comparison
Dalam bidang pembangunan web, JavaScript's Date constructor telah terbukti sebagai sekutu yang boleh dipercayai kepada pembangun yang ingin memanipulasi tarikh. Walau bagaimanapun, fenomena ingin tahu telah diperhatikan apabila menggunakan pembina ini merentasi pelayar utama. Walaupun Firefox dan Chrome dengan gembira menerima kefungsian Date, Internet Explorer telah diketahui tersandung, mengembalikan NaN (Bukan-Nombor) untuk operasi tarikh tertentu.
Untuk merungkai enigma ini, mari kita mendalami isu khusus yang diperhatikan oleh pemaju membina kalendar. Pembinaan Tarikh mereka daripada rentetan tarikh berformat PHP ('m, d, Y') berfungsi dengan sempurna dalam Firefox dan Chrome, tetapi IE berkeras untuk membuat NaN tantrum.
Masalah Pembinaan Tarikh
<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>
Punca masalah terletak pada format tarikh. Walaupun IE boleh menghuraikan tarikh dalam format asalnya ('YYYY-MM-DD'), ia bergelut apabila berhadapan dengan format 'm, d, Y' yang digunakan dalam kod ini.
Penyelesaian: Menyeragamkan Format Tarikh
Untuk memastikan keserasian merentas penyemak imbas, adalah penting untuk menyeragamkan format tarikh yang digunakan dalam pembinaan Tarikh. Pendekatan yang disyorkan ialah menukar rentetan tarikh kepada format yang mudah difahami oleh IE. Satu pilihan yang mudah ialah memanfaatkan kaedah split() untuk membedah rentetan tarikh dan kemudian menghantar komponen individu ke dalam pembina Tarikh.
Sebagai contoh, dengan mengandaikan medan datetime/timestamp MySQL mengembalikan rentetan seperti "2011- 08-03 09:15:11", coretan kod berikut akan menormalkan format untuk keserasian 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>
Dengan menggunakan pendekatan ini, anda boleh memastikan bahawa operasi Tarikh anda akan dimainkan dengan baik merentas semua pelayar utama , menghapuskan ralat NaN yang tidak dapat dijelaskan yang boleh mendatangkan malapetaka pada kod anda.
Atas ialah kandungan terperinci Apa yang Menyebabkan Ralat NaN dalam Internet Explorer Apabila Menggunakan Pembina Tarikh JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!