جافا سكريبت - تجاوز نمط !important


العنوان يلخص الأمر إلى حد كبير.

ورقة الأنماط الخارجية تحتوي على الكود التالي:

td.EvenRow a {
  display: none !important;
}

لقد جربت استخدام:

element.style.display = "inline";

و

element.style.display = "inline !important";

لكنهما لا يعملان. هل من الممكن تجاوز نمط !important باستخدام الجافاسكريبت؟

هذا من أجل امتداد غريسمانكي، إذا كان لذلك فرق.

الإجابة رقم 1

هناك بضعة جمل بسيطة يمكنك استخدامها للقيام بذلك.

  1. اضبط "style" السمة على العنصر:
element.setAttribute('style', 'display:inline !important');

أو...

  1. قم بتعديل خاصية cssText للكائن style:
element.style.cssText = 'display:inline !important';

أي منهما سيقوم بالمهمة.

===

لقد كتبت إضافة jQuery تسمى "important" للتعامل مع قواعد !important في العناصر: http://github.com/premasagar/important

===

تعديل: كما تم مشاركته في التعليقات، توفر واجهة CSSOM القياسية (واجهة برمجة التطبيقات لجافاسكريبت للتفاعل مع CSS) طريقة setProperty:

element.style.setProperty(propertyName, value, priority);

مثال:

document.body.style.setProperty('background-color', 'red', 'important');

الإجابة رقم 2

لـ element.style طريقة setProperty التي يمكنها أخذ الأولوية كمعامل ثالث:

element.style.setProperty("display", "inline", "important")

لم يكن يعمل في الإصدارات القديمة من إنترنت إكسبلورر لكنه يجب أن يكون جيدًا في المتصفحات الحالية.

الإجابة رقم 3

أعتقد أن الطريقة الوحيدة للقيام بذلك هي إضافة النمط كتصريح CSS جديد مع اللاحقة '!important'. أسهل طريقة للقيام بذلك هي إلحاق عنصر