للوصول إلى العنصر داخل الدالة makeD
، يمكنك استخدام الطريقة التالية:
javascriptcloneN.querySelector('.def').addEventListener("click", function() {
makeD(response, this);
});
هنا، قمنا بإنشاء دالة مجهولة (anonymous function) تقوم بتنفيذ makeD
وتمرير response
و this
كمعلمات. this
سيشير إلى العنصر .def
الذي تم النقر عليه داخل الدالة المجهولة، وبالتالي يمكنك الوصول إلى cloneN.querySelector('.defaultDBIcon')
داخل الدالة makeD
.
المزيد من المعلومات
بالتأكيد، هنا بعض المعلومات الإضافية حول كيفية الوصول إلى this
داخل دالة معاملة (callback function) في addEventListener
:
-
استخدام
bind
: يمكنك استخدامbind
لربطthis
بالدالةmakeD
مسبقًا. على سبيل المثال:javascriptcloneN.querySelector('.def').addEventListener("click", makeD.bind(null, response));
هنا، يتم ربط
this
بـnull
(لأننا لا نحتاج إلى تغييره) ويتم تمريرresponse
كمعامل لـmakeD
. -
استخدام دالة مجهولة: يمكنك استخدام دالة مجهولة للتقاط
this
داخلها، كما في المثال السابق. -
استخدام
arrow function
: يمكنك استخدامarrow function
التي لا تقوم بإنشاءthis
خاص بها، بل تأخذthis
من النطاق الخارجي. على سبيل المثال:javascriptcloneN.querySelector('.def').addEventListener("click", () => { makeD(response, this); });
هنا،
this
سيشير إلىthis
الخارجي للدالةaddEventListener
. -
الوصول إلى
this
باستخدام متغير مؤقت: يمكنك تعيينthis
إلى متغير مؤقت داخل نطاق الدالة الرئيسية، ثم استخدام هذا المتغير داخل الدالة التابعة. على سبيل المثال:javascriptvar that = this; cloneN.querySelector('.def').addEventListener("click", function() { makeD(response, that); });
هنا،
that
يحتوي علىthis
الخارجي للدالة الرئيسية، والذي يمكن استخدامه داخل الدالة المعاملة.