سؤال

أنا أعمل على تطبيق ويب للجوال يحتاج إلى العمل في IE Mobile. لقد ضاقت خطأ JavaScript في غضون IE المحمول لا يدعم "className'الخاص (محرك IE4 ...). أحاول العثور على بديل يعمل عبر جميع المتصفحات بتغييرات الحد الأدنى من التعليمات البرمجية (لدي بالفعل عدد قليل من المكتبات التي تستخدمها "className').

أسهل نهج يمكن أن أفكر فيه هو تعديل النموذج الأولي عناصر IE لتضمين ClassName (إذا لم يكن لديك)، فإن المشكلة هي أنني لا أعرف ما البديلclassName'في IE المحمول.

لقد جربت هذا:

element.className = element.class;

من الواضح أنها لا تعمل بسبب class تعد الكلمة الأساسية في JavaScript وضاغط JS الخاص بي لا يعجبك، وربما غير صالح على أي حال.

بخلاف استخدام "Setattribute ()" في كل مكان أحتاج إلى تعديل فئة العنصر، هل هناك أي خاصية يمكنني استخدامها هي ما يعادل اسم Classname؟

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

المحلول

بينما لا يمكنك تجنب استخدام setAttribute(), ، يمكنك أن تأخذ خطا من JQuery Playbook واستخدم إجراء مساعد مع معلمة اختيارية. هذا الرمز مختبر، ولكن يجب أن تعمل:

var className = function (obj, value)
{
    if (value !== undefined)
    {
        return obj.setAttribute ('class', value);
    }
    return obj.getAttribute ('class');
};

// Use as
alert (className (element));
className (element, "foo");
alert (className (element));

نصائح أخرى

لا سمة، لا. أخشى أنك عالق مع GetAttribute () و Setattribute ().

متابعة ما john millikin، يمكنك حتى أن تجعل هذه الوظيفة جزءا من نموذج عنصر IE:

Element.prototype.getClass = function() {
    return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
    return obj.setAttribute('class', newClass);
}

أو إذا كنت تريد طريقة التحرير والسرد مثل John Save ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top