it-swarm.dev

كيفية الحصول على عنصر حسب اسم الفصل؟

باستخدام جافا سكريبت ، يمكننا الحصول على عنصر بواسطة معرف باستخدام بناء الجملة التالي:

var x=document.getElementById("by_id");

حاولت متابعة الحصول على عنصر حسب الفصل:

var y=document.getElementByClass("by_class");

لكنه أدى إلى خطأ:

getElementByClass is not function

كيف يمكنني الحصول على عنصر من فصله؟

138
TDHM

اسم دالة DOM هو في الواقع getElementsByClassName ، وليس getElementByClassName ، وذلك ببساطة لأن أكثر من عنصر في الصفحة يمكن أن يكون له نفس الفئة ، وبالتالي: Elements.

ستكون قيمة الإرجاع هي مثيل NodeList أو مجموعة فرعية من NodeList (FF ، على سبيل المثال ، تقوم بإرجاع مثيل HTMLCollection). على أي حال: القيمة المرجعة هي كائن يشبه الصفيف:

var y = document.getElementsByClassName('foo');
var aNode = y[0];

إذا كنت need لكائن الإرجاع كصفيف ، لسبب ما ، يمكنك القيام بذلك بسهولة ، بسبب خاصية طوله السحرية:

var arrFromList = Array.prototype.slice.call(y);
//or as per AntonB's comment:
var arrFromList = [].slice.call(y);

كما yckart اقترح querySelector('.foo') و querySelectorAll('.foo') سيكون الأفضل ، على الرغم من أنهما ، في الواقع ، دعم أفضل (93.99 ٪ مقابل 87.24 ٪) ، وفقا ل caniuse.com:

199
Elias Van Ootegem

خيار آخر هو استخدام ، querySelector('.foo') أو querySelectorAll('.foo') الذي يحتوي على دعم مستعرض أوسع من getElementsByClassName.

http://caniuse.com/#feat=queryselector

http://caniuse.com/#feat=getelementsbyclassname

47
yckart

تحتاج إلى استخدام document.getElementsByClassName('class_name');

ولا تنس أن القيمة التي تم إرجاعها هي مجموعة من العناصر ، لذلك إذا كنت تريد الاستخدام الأول:

document.getElementsByClassName('class_name')[0]

17
udidu

يمكنك استخدام

getElementsByClassName

افترض أن لديك بعض العناصر وقمت بتطبيق "اختبار" اسم الفصل ، لذلك ، يمكنك الحصول على عناصر مثل ما يلي

var tests = document.getElementsByClassName('test');

تقوم بإرجاع مثيل NodeList أو مجموعة فرعية به: HTMLCollection (FF).

اقرأ المزيد

5
Talha