"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما الذي يسبب أخطاء NaN في Internet Explorer عند استخدام مُنشئ التاريخ في JavaScript؟

ما الذي يسبب أخطاء NaN في Internet Explorer عند استخدام مُنشئ التاريخ في JavaScript؟

تم النشر بتاريخ 2024-11-09
تصفح:615

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

أعطال منشئ التاريخ في IE: مقارنة عبر المتصفحات

في مجال تطوير الويب، أثبت منشئ التاريخ في JavaScript أنه أداة إنشاء التاريخ. حليف موثوق للمطورين الذين يسعون إلى التلاعب بالتواريخ. ومع ذلك، فقد لوحظت ظاهرة غريبة عند استخدام هذا المنشئ عبر المتصفحات الرئيسية. في حين أن Firefox وChrome يحتضنان بسعادة وظيفة Date، فمن المعروف أن Internet Explorer يتعثر، ويعيد NaN (Not-a-Number) لعمليات تاريخ معينة.

لكشف هذا اللغز، دعنا نتعمق في المشكلة المحددة التي لاحظها مطور يقوم ببناء تقويم. لقد عمل إنشاء التاريخ من سلسلة تاريخ بتنسيق PHP ('m, d, Y') بشكل لا تشوبه شائبة في Firefox وChrome، لكن IE أصر على إثارة نوبات غضب NaN.

مشكلة إنشاء التاريخ

function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d

يكمن جذر المشكلة في تنسيق التاريخ. بينما يستطيع IE تحليل التواريخ بتنسيقه الأصلي ('YYYY-MM-DD')، فإنه يواجه صعوبة عند مواجهته بالتنسيق 'm, d, Y' المستخدم في هذا الكود.

الحل: توحيد تنسيق التاريخ

لضمان التوافق عبر المتصفحات، من الضروري توحيد تنسيق التاريخ المستخدم في إنشاء التاريخ. الطريقة الموصى بها هي تحويل سلسلة التاريخ إلى تنسيق يمكن لـ IE فهمه بسهولة. أحد الخيارات الملائمة هو الاستفادة من طريقة Split() لتشريح سلسلة التاريخ ثم تمرير المكونات الفردية إلى مُنشئ التاريخ.

على سبيل المثال، بافتراض أن حقل التاريخ والوقت/الطابع الزمني في MySQL يُرجع سلسلة مثل "2011- 08-03 09:15:11"، سيؤدي مقتطف التعليمات البرمجية التالي إلى تطبيع التنسيق لتوافق IE:

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]);

باعتماد هذا بهذه الطريقة، يمكنك التأكد من أن عمليات التاريخ الخاصة بك ستعمل بشكل جيد عبر جميع المتصفحات الرئيسية، والتخلص من أخطاء NaN التي لا يمكن تفسيرها والتي يمكن أن تعيث فسادًا في التعليمات البرمجية الخاصة بك.

بيان الافراج أعيد طبع هذه المقالة على: 1729402280 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3