Pembina Tarikh IE Mengembalikan NaN: Penyelesaian Penukaran Tarikh Penyemak Imbas Rentas
Dalam bidang manipulasi tarikh JavaScript, isu pelik timbul dalam Internet Explorer (IE) di mana pembina Tarikh berkelakuan berbeza daripada rakan sebayanya dalam Firefox dan Chrome. Apabila cuba mencipta objek Tarikh baharu daripada rentetan, IE mengembalikan NaN (Bukan Nombor), manakala penyemak imbas lain menghasilkan tarikh yang sah.
Untuk memahami percanggahan ini, kita perlu menyelidiki mekanisme penghurai asas yang digunakan oleh setiap pelayar. Dalam IE, pembina Tarikh bergelut dengan format tarikh tertentu, terutamanya yang menyertakan koma sebagai pemisah.
Berikut ialah contoh khusus yang ditemui oleh pembangun yang cuba membina kalendar:
<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>
Dalam fungsi ini, parameter dateText mewakili hari Isnin minggu semasa, diformatkan sebagai 'm, d, Y' (cth., "02, 01, 2010"). Walaupun format ini berfungsi dengan lancar dalam Firefox dan Chrome, ia menimbulkan cabaran dalam IE, yang gagal menghuraikan nilai yang dipisahkan koma dengan betul.
Untuk menyelesaikan isu ini, kami boleh menggunakan yang lebih konsisten dan serasi merentas penyemak imbas format tarikh. Satu pendekatan sedemikian adalah untuk menukar rentetan yang dipisahkan koma kepada tatasusunan nilai diskret, yang kemudiannya boleh digunakan untuk membina objek Date yang sah:
<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>
Dalam contoh ini, pembolehubah dateStr mewakili tarikh dan masa diambil daripada pangkalan data MySQL dalam format 'YYYY-MM-DD HH:MM:SS'. Dengan memisahkan rentetan ini kepada bahagian komponennya dan menghantarnya secara individu kepada pembina Tarikh, kami memastikan penukaran dikendalikan secara konsisten merentas penyemak imbas.
Penyelesaian ini menangani percanggahan penghuraian tarikh merentas penyemak imbas dan membolehkan fungsi buildWeek untuk berfungsi dengan lancar dalam semua penyemak imbas utama, termasuk Internet Explorer.
Atas ialah kandungan terperinci Adakah Pembina Tarikh IE Menyebabkan Ralat NaN dalam Penukaran Tarikh Merentas Pelayar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!