الفرق بين المراجعتين ل"JavaScript/Document/querySelector"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إضافة الصّفحة)
 
ط
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 2: سطر 2:
 
يُعيد التّابع <code>Document.querySelector()‎</code> أول كائنٍ من النّوع <code>[[JavaScript/Element|Element]]</code> الذي يُمثّل العنصر المُوافِق للمُحدِّد أو المحدّدات المعطاة. ويُعيد القيمة <code>null</code> في حالة لم يجِد أيّ عنصر.
 
يُعيد التّابع <code>Document.querySelector()‎</code> أول كائنٍ من النّوع <code>[[JavaScript/Element|Element]]</code> الذي يُمثّل العنصر المُوافِق للمُحدِّد أو المحدّدات المعطاة. ويُعيد القيمة <code>null</code> في حالة لم يجِد أيّ عنصر.
  
مُلاحظة: يتمّ البحث باستعمال المرور على العمق أولا قبل التّرتيب (depth-first pre-order traversal) حول عقد المستند بدايةً من أول عنصر في هيكل المستند ويُكرّر (iterating) حول العقد في القائمة مرتّبةً حسب عدد العقد الأبناء.
+
'''مُلاحظة:''' يتمّ البحث باستعمال المرور على العمق أولًا قبل التّرتيب (depth-first pre-order traversal) حول عقد المستند بدايةً من أول عنصر في هيكل المستند ويُكرّر (iterating) حول العقد في القائمة مرتّبةً حسب عدد العقد الأبناء.
  
 
==البنية العامة==
 
==البنية العامة==
سطر 9: سطر 9:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===المعاملات===
+
===<code>selectors‎</code>===
====<code>selectors‎</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>.
سلسلة نصيّة من النّوع <code>[[JavaScript/DOMString|DOMString]]</code> تحتوي على مُحدّد واحدٍ أو أكثر لمُوافقته مع عناصر المستند والبحث عن العنصر المرغوب. يجب على هذه السّلسلة النّصيّة أن تكون مُحدّد CSS صالح، إن لم يكن كذلك، فسيُرمى استثناء <code>SYNTAX_ERR‎</code>، انظر [https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors هذه الصّفحة] للمزيد حول المُحدّدات وكيفيّة إدارتها.
 
  
مُلاحظة: يجب تهريب (escaping) المحارف التي ليست جزءًا من بنية CSS العامّة باستعمال محرف \. ولأنّ JavaScript تستعمل كذلك المحرف \ لتهريب المحارف، فيجب كتابة السلاسل النّصيّة الحرفيّة بعنايةٍ خاصّةٍ عند استعمال هذه المحارف. انظر [[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|فقرة تهريب المحارف الخاصّة]] أدناه لمزيد من المعلومات.
  
 
===القيمة المعادة===
 
===القيمة المعادة===
كائنٌ من النّوع <code>[[JavaScript/Element|Element]]</code> يُمثّل أول عنصر يوافق [[CSS#.D8.A8.D9.86.D9.8A.D8.A9_.D8.B4.D9.8A.D9.81.D8.B1.D8.A7.D8.AA_CSS|مُحدّدات CSS]] المُعطاة.
+
كائنٌ من النّوع <code>[[JavaScript/Element|Element]]</code> يُمثّل أول عنصر يوافق [[:تصنيف:CSS Selectors|مُحدّدات CSS]] المُعطاة.
  
 
إن أردت قائمةً بجميع العناصِر المُوافقة للمحدّدات المعطاة، فعليك استعمال التّابع <code>[[JavaScript/Document/querySelectorAll|Document.querySelectorAll()‎]]</code> عوضًا عن هذا التّابع.
 
إن أردت قائمةً بجميع العناصِر المُوافقة للمحدّدات المعطاة، فعليك استعمال التّابع <code>[[JavaScript/Document/querySelectorAll|Document.querySelectorAll()‎]]</code> عوضًا عن هذا التّابع.
سطر 22: سطر 21:
 
===الاستثناءات===
 
===الاستثناءات===
 
====<code>SYNTAX_ERR‎</code>====
 
====<code>SYNTAX_ERR‎</code>====
يُرمى في حالة كانت بنية المُحدّدات <code>selectors‎</code> خاطئة.
+
يُرمى في حالة كانت بنية المُحدّدات <code>selectors‎</code> خطأ.
  
 
==أمثلة==
 
==أمثلة==
 
===إيجاد أول عنصر يوافق صنفه الصنف المعطى===
 
===إيجاد أول عنصر يوافق صنفه الصنف المعطى===
في المثال التّالي، نقوم بإيجاد أول عنصرٍ ذو الصّنف <code>‎"‎myclass‎"‎‎</code> في المستند:
+
في المثال التّالي، سنبحث عن أول عنصرٍ ذي الصّنف <code>‎"‎myclass‎"‎‎</code> في المستند:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
var el = document.querySelector(".myclass");
 
var el = document.querySelector(".myclass");
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===محدد أكثر تعقدًا===
+
===محدد أكثر تعقيدًا===
يُمكن للمحدّدات أن تكون طريقةً فعّالة جدًّا للحصول على عناصِر توافق شروطا معقّدة كما في المثال التّالي.
+
يُمكن للمحدّدات أن تكون طريقةً فعّالة جدًّا للحصول على عناصِر توافق شروطًا معقّدة كما في المثال التّالي.
  
في هذا المثال، سيُعاد أول عنصر <code><input></code>  في المستند ذو الاسم  ‎‎"‎‎login‎‎"‎‎‎ (أي <code>‎<input ‎name‎=‎"‎login‎"‎‎/‎‎>‎</code>) الموجود داخل العنصر <code><nowiki><div></nowiki></code> ذو الصّنف <code>"user-panel main"</code> (أي <code><nowiki><‎div ‎class‎=‎"‎user-panel main‎"‎></nowiki></code>):
+
في هذا المثال، سيُعاد أول عنصر <code>[[HTML/input|<input>]]</code>  في المستند ذو الاسم  ‎‎"‎‎login‎‎"‎‎‎ (أي <code>‎<input ‎name‎=‎"‎login‎"‎‎‎‎>‎</code>) الموجود داخل العنصر <code>[[HTML/div|<nowiki><div></nowiki>]]</code> ذو الصّنف <code>"user-panel main"</code> (أي <code><nowiki><‎div ‎class‎=‎"‎user-panel main‎"‎></nowiki></code>):
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
var el = document.querySelector("div.user-panel.main input[name='login']");
 
var el = document.querySelector("div.user-panel.main input[name='login']");
سطر 40: سطر 39:
  
 
==ملاحظات==
 
==ملاحظات==
إن كان المحدّد <code>selector</code> يوافق معرّفا ID استُخدِم أكثر من مرّة واحدة في المستند خطأً، فالعنصر الأول ذو المعرّف المُعطى هو الذي يُعاد.
+
إن كان المحدّد <code>selector</code> يوافق معرّفًا (ID) استُخدِم أكثر من مرّة واحدة في المستند خطأً، فالعنصر الأول ذو المعرّف المُعطى هو الذي يُعاد.
لن تُعيد [[CSS#.D8.A7.D9.84.D8.B9.D9.86.D8.A7.D8.B5.D8.B1_.D8.A7.D9.84.D8.B2.D8.A7.D8.A6.D9.81.D8.A9|عناصر CSS زائفة]] أية عناصر، وذلك حسب ما حُدّد في مواصفة [http://www.w3.org/TR/selectors-api/#grammar واجهة المُحدّدات البرمجيّة].
+
 
 +
لن تُعيد [[:تصنيف:CSS pseudo-element|عناصر CSS الزائفة]] أية عناصر، وذلك حسب ما حُدّد في مواصفة [http://www.w3.org/TR/selectors-api/#grammar واجهة المُحدّدات البرمجيّة].
  
 
===تهريب المحارف الخاصّة===
 
===تهريب المحارف الخاصّة===
لمُوافقة مُعرّف أو مُحدّدات لا تتّبع بنية CSS العامّة المعياريّة (عبر استخدام علامة : أو مساحةٍ خطأً مثلًا)، فعليك تهريب المحرف باستخدام علامة <code>"\"‎</code>.  ولأنّ هذه العلامة تُستعمل كمحرف تهريب في JavaScript كذلك، فعليك تهريب المحرف مرّتين إن كنت تُريد استخدام سلسلة نصيّة حرفيّة (literal string)، مرّةً للسلسلة النّصيّة الخاصّة بلغة JavaScript ومرّةً أخرى للتّابع <code>Document.querySelector()‎</code>:
+
لمُوافقة مُعرّف أو مُحدّدات لا تتّبع بنية CSS العامّة المعياريّة (عبر استخدام علامة : أو فراغ خطأً مثلًا)، فعليك تهريب المحرف باستخدام علامة <code>"\"‎</code>.  ولأنّ هذه العلامة تُستعمل كمحرف تهريب في JavaScript كذلك، فعليك تهريب المحرف مرّتين إن كنت تُريد استخدام سلسلة نصيّة حرفيّة (literal string)، مرّةً للسلسلة النّصيّة الخاصّة بلغة JavaScript ومرّةً أخرى للتّابع <code>Document.querySelector()‎</code>:
 
<syntaxhighlight lang="html">
 
<syntaxhighlight lang="html">
 
<div id="foo\bar"></div>
 
<div id="foo\bar"></div>
سطر 90: سطر 90:
  
 
==مصادر ومواصفات==
 
==مصادر ومواصفات==
* مواصفة [https://dev.w3.org/2006/webapi/selectors-api2/#interface-definitions Selectors API Level 2]
+
* مواصفة [https://dev.w3.org/2006/webapi/selectors-api2/#interface-definitions Selectors API Level 2].
* مواصفة [https://www.w3.org/TR/selectors-api/#interface-definitions Selectors API Level 1]
+
* مواصفة [https://www.w3.org/TR/selectors-api/#interface-definitions Selectors API Level 1].
  
 
  [[تصنيف:JavaScript]]
 
  [[تصنيف:JavaScript]]

المراجعة الحالية بتاريخ 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

انظر أيضًا

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