سؤال

لدي برنامج نصي JS يحتوي على العديد من الوظائف، وأهمها:

function id(i) {
    if(document.getElementById)
        return document.getElementById(i);
    return;
}

إنه يوفر لي الكثير من وحدات البايت عند كتابة document.getElementById() في كل مرة.مشكلتي هي أنني أقوم بشكل متكرر بإضافة وإزالة الفئات والسمات الأخرى من العناصر.أريد أن أكون قادرًا على القيام بذلك:

id('main').addClass("someClass");

هل يعرف أحد أي برامج تعليمية جيدة حول نماذج Javascript يمكنها شرح ذلك؟شكرًا.

هل كانت مفيدة؟

المحلول

وهذه التقنية التي تبحث عنها هي طريقة تسلسل. في الأساس، يجب على وظيفة "معرف" عودة مثيل الكائن الذي لديه طريقة "addClass" على ذلك. وهذا الأسلوب من شأنه أن "يعود هذا".

وهنا البرنامج التعليمي الذي يوضح هذا المفهوم:
http://javascriptant.com/articles/32/chaining-your-javascript- طرق

وأود أيضا أن أوصي هذا الكتاب لمعرفة المزيد من التقنيات مثل هذا (تتناول نعم تسلسل) :-)
http://jsdesignpatterns.com/

نصائح أخرى

وأود أن أسأل: هل تعتبر مجرد استخدام شيء من هذا القبيل مسج؟ إذا لم تصبح المشكلة ببساطة:

$("#main").addClass("someClass");

والانتهاء من ذلك. إذا كان الهدف هو تنفيذ هذا بنفسك (؟ إذا كان الأمر كذلك، لماذا) ثم عليك فقط أن نعرف أنه إذا كان العنصر يحتوي على 3 فصول، السمة الفعلية فقط:

"one two three"

وأما الجانب الآخر بالطبع هو كتابة طريقة التمديد.

وأنت لا يمكن تحقيق ذلك لجميع المتصفحات، وخصوصا ليس من الممكن تمديد الطرق المتاحة على العنصر في IE6 أو 7.

لنكون صادقين كنت تنقذ نفسك أكياس من الوقت إذا كنت تشمل فقط مسج في تطوير الخاص بك.

من الأفضل أن تستخدم إطارًا إذا استطعت، كما يقول cletus.

ومع ذلك، فإن AnthonyWJones ليس على حق تمامًا - فليس من الممكن توسيع الأساليب المتاحة على كائن العنصر العام، لكنك يستطيع لا يزال إضافته إلى العناصر الفردية.

يمكن لوظيفة المعرف الخاصة بك توسيع العناصر التي تم إرجاعها باستخدام طريقة addClass:

function get(id){
    el = document.getElementById(id);
    el.addClass = function(cls){
        // your addClass code here
        // (remember IE uses className, others use class)
    };
    return el;
}

يمكنك أيضًا إضافته إلى كائن العنصر (الذي يضيفه تلقائيًا إلى جميع العناصر الموجودة في الصفحة) للمتصفحات التي تدعم هذه الميزة، ثم قم فقط بإضافة طريقة في وظيفة المعرف الخاصة بك لـ IE - سيؤدي هذا إلى توفير الذاكرة وتسريع التطبيق قليلاً، خاصة عندما تبدأ بإضافة الكثير من أساليب العناصر.

هذا السلوك هو بالضبط الطريقة التي يحل بها MooTools هذه المشكلة - ومن الجدير التكرار أنه من الأفضل استخدام إطار عمل حيثما أمكن ذلك!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top