الفرق بين المراجعتين لصفحة: «JavaScript/Document/querySelector»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
 
سطر 10: سطر 10:


===<code>selectors‎</code>===
===<code>selectors‎</code>===
سلسلة نصيّة من النّوع <code>[[JavaScript/DOMString|DOMString]]</code> تحتوي على مُحدّد واحدٍ أو أكثر لمُوافقته مع عناصر المستند والبحث عن العنصر المرغوب. يجب على هذه السّلسلة النّصيّة أن تكون مُحدّد CSS صالح، إن لم يكن كذلك، فسيُرمى استثناء <code>SYNTAX_ERR‎</code>.
سلسلة نصيّة من النّوع <code>[[JavaScript/DOMString|DOMString]]</code> تحتوي على مُحدّد واحدٍ أو أكثر لمُوافقته مع عناصر المستند والبحث عن العنصر المرغوب. يجب على هذه السّلسلة النّصيّة أن تكون [[CSS#.D8.A7.D9.84.D9.85.D9.8F.D8.AD.D8.AF.D9.90.D9.91.D8.AF.D8.A7.D8.AA .D9.81.D9.8A .D9.84.D8.BA.D8.A9 CSS|مُحدّد CSS]] صالح، إن لم يكن كذلك، فسيُرمى استثناء <code>SYNTAX_ERR‎</code>.


'''مُلاحظة:''' يجب تهريب (escaping) المحارف التي ليست جزءًا من بنية CSS العامّة باستعمال محرف <code>\</code>. ولأنّ JavaScript تستعمل كذلك المحرف <code>\</code> لتهريب المحارف، فيجب كتابة السلاسل النّصيّة الحرفيّة بعنايةٍ خاصّةٍ عند استعمال هذه المحارف. انظر [[JavaScript/Document/querySelector#.D8.AA.D9.87.D8.B1.D9.8A.D8.A8_.D8.A7.D9.84.D9.85.D8.AD.D8.A7.D8.B1.D9.81_.D8.A7.D9.84.D8.AE.D8.A7.D8.B5.D9.91.D8.A9|فقرة تهريب المحارف الخاصّة]] أدناه لمزيد من المعلومات.
'''مُلاحظة:''' يجب تهريب (escaping) المحارف التي ليست جزءًا من بنية [[CSS]] العامّة باستعمال محرف <code>\</code>. ولأنّ JavaScript تستعمل كذلك المحرف <code>\</code> لتهريب المحارف، فيجب كتابة السلاسل النّصيّة الحرفيّة بعنايةٍ خاصّةٍ عند استعمال هذه المحارف. انظر [[JavaScript/Document/querySelector#.D8.AA.D9.87.D8.B1.D9.8A.D8.A8_.D8.A7.D9.84.D9.85.D8.AD.D8.A7.D8.B1.D9.81_.D8.A7.D9.84.D8.AE.D8.A7.D8.B5.D9.91.D8.A9|فقرة تهريب المحارف الخاصّة]] أدناه لمزيد من المعلومات.


===القيمة المعادة===
===القيمة المعادة===

المراجعة الحالية بتاريخ 16:05، 7 أكتوبر 2022

يُعيد التّابع Document.querySelector()‎ أول كائنٍ من النّوع Element الذي يُمثّل العنصر المُوافِق للمُحدِّد أو المحدّدات المعطاة. ويُعيد القيمة null في حالة لم يجِد أيّ عنصر.

مُلاحظة: يتمّ البحث باستعمال المرور على العمق أولًا قبل التّرتيب (depth-first pre-order traversal) حول عقد المستند بدايةً من أول عنصر في هيكل المستند ويُكرّر (iterating) حول العقد في القائمة مرتّبةً حسب عدد العقد الأبناء.

البنية العامة

element = document.querySelector(selectors);

selectors‎

سلسلة نصيّة من النّوع DOMString تحتوي على مُحدّد واحدٍ أو أكثر لمُوافقته مع عناصر المستند والبحث عن العنصر المرغوب. يجب على هذه السّلسلة النّصيّة أن تكون مُحدّد CSS صالح، إن لم يكن كذلك، فسيُرمى استثناء SYNTAX_ERR‎.

مُلاحظة: يجب تهريب (escaping) المحارف التي ليست جزءًا من بنية CSS العامّة باستعمال محرف \. ولأنّ JavaScript تستعمل كذلك المحرف \ لتهريب المحارف، فيجب كتابة السلاسل النّصيّة الحرفيّة بعنايةٍ خاصّةٍ عند استعمال هذه المحارف. انظر فقرة تهريب المحارف الخاصّة أدناه لمزيد من المعلومات.

القيمة المعادة

كائنٌ من النّوع Element يُمثّل أول عنصر يوافق مُحدّدات CSS المُعطاة.

إن أردت قائمةً بجميع العناصِر المُوافقة للمحدّدات المعطاة، فعليك استعمال التّابع Document.querySelectorAll()‎ عوضًا عن هذا التّابع.

الاستثناءات

SYNTAX_ERR‎

يُرمى في حالة كانت بنية المُحدّدات selectors‎ خطأ.

أمثلة

إيجاد أول عنصر يوافق صنفه الصنف المعطى

في المثال التّالي، سنبحث عن أول عنصرٍ ذي الصّنف ‎"‎myclass‎"‎‎ في المستند:

var el = document.querySelector(".myclass");

محدد أكثر تعقيدًا

يُمكن للمحدّدات أن تكون طريقةً فعّالة جدًّا للحصول على عناصِر توافق شروطًا معقّدة كما في المثال التّالي.

في هذا المثال، سيُعاد أول عنصر <input> في المستند ذو الاسم ‎‎"‎‎login‎‎"‎‎‎ (أي ‎<input ‎name‎=‎"‎login‎"‎‎‎‎>‎) الموجود داخل العنصر <div> ذو الصّنف "user-panel main" (أي <‎div ‎class‎=‎"‎user-panel main‎"‎>):

var el = document.querySelector("div.user-panel.main input[name='login']");

ملاحظات

إن كان المحدّد selector يوافق معرّفًا (ID) استُخدِم أكثر من مرّة واحدة في المستند خطأً، فالعنصر الأول ذو المعرّف المُعطى هو الذي يُعاد.

لن تُعيد عناصر CSS الزائفة أية عناصر، وذلك حسب ما حُدّد في مواصفة واجهة المُحدّدات البرمجيّة.

تهريب المحارف الخاصّة

لمُوافقة مُعرّف أو مُحدّدات لا تتّبع بنية CSS العامّة المعياريّة (عبر استخدام علامة : أو فراغ خطأً مثلًا)، فعليك تهريب المحرف باستخدام علامة "\"‎. ولأنّ هذه العلامة تُستعمل كمحرف تهريب في JavaScript كذلك، فعليك تهريب المحرف مرّتين إن كنت تُريد استخدام سلسلة نصيّة حرفيّة (literal string)، مرّةً للسلسلة النّصيّة الخاصّة بلغة JavaScript ومرّةً أخرى للتّابع Document.querySelector()‎:

<div id="foo\bar"></div>
<div id="foo:bar"></div>

<script>
  // هنا 
  // \b
  // محرف تحكم
  // backspace control character
  console.log('#foo\bar');               // "#fooar" (\b is the backspace control character)
  document.querySelector('#foo\bar');    // لا توافق أي عنصر

  console.log('#foo\\bar');              // "#foo\bar"
  console.log('#foo\\\\bar');            // "#foo\\bar"
  document.querySelector('#foo\\\\bar'); // توافق العنصر الأول

  document.querySelector('#foo:bar');    // لا توافق أي عنصر
  document.querySelector('#foo\\:bar');  //  توافق العنصر الثّاني
</script>

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 1 3.5 8 10 3.2

انظر أيضًا

مصادر ومواصفات