آموزش جاوا اسکریپت – پیمایش DOM در جاوا اسکریپت

آموزش جاوا اسکریپت

در این بخش از سری آموزش جاوا اسکریپت قصد داریم شما را با پیمایش DOM در جاوا اسکریپت آشنا کنیم.

 

پیمایش بین گره های DOM

در بخش های قبلی نحوه انتخاب المان ها در صفحه وب را یاد گرفتید. اما موقعیت های مختلفی وجود دارد که نیاز به دسترسی به یک فرزند, والد یا اجداد المان دارد.

بخش DOM در جاوا اسکریپت را برای درک بهتر روابط منطقی بین گره ها در درخت DOM را ببینید.

گره DOM چندین خصوصیت و متد برای پیامیش بین ساختار درختی DOM و انجام خیلی آسان تغییر ارایه می دهد.

در بخش زیر نحوه پیمایش DOM در جاوا اسکریپت در جهت های بالا, پایین و چپ و راست را یاد می گیرید.

 

دسترسی به گره های فرزند

شما می توانید از خصوصیات firstChild و lastChild گره DOM برای درستی مستقیم به گره فرزند اول و آخر استفاده کنید.

اگر هیچ گره‌ی وجود ندارد مقدار null برگشت داده می شود.

نکته: nodeName یک خصوصیت فقط-خواندنی است که مقدار نام گره فعلی را بصورت رشته (string) برگشت می دهد. برای مثال, نام تگ را برای گره المان, #text برای گره متن , #comment برای گره کامنت و …

اگر متوجه شده باشید در مثال بالا, nodeName از اولین فرزند گره المان DIV اصلی, مقدار #text را به جای h1 برگشت می دهد چرا که فاصله ها, تب, خط جدید و غیره کاراکترهای معتبر از گره #text هستند و به یک بخش از درخت DOM تبدیل شده اند.

بنابراین, از آنجا که تگ <div> شامل یک خط جدید قبل از تگ <h1> هستند, بنابراین یک گره #text را می سازند.

برای جلوگیری از مشکل برگشت دادن گره های  #text و #comment با firstChild و lastChild , باید از خصوصیت جایگزین firstElementChild و lastElementChild برای برگشت دادن اولین و آخرین المان گره استفاده کنید.

مشابه آن می توانید از خصوصیت childNodes برای دسترسی به همه گره های فرزند المان داده شده که اولین فرزند گره با ایندکس ۰ است, بهره ببرید.

childNodes همه گره های فرزند شامل گره های غیر-المان مثل متن یا گره های کامنت را برگشت می دهد.

برای دریافت مجموعه ای از المان ها می توانید به جای آن از children بهره ببرید.

 

دسترسی به گره های والد

می توانید از parentNode برای دسترسی به والد های گره مشخص شده در درخت DOM استفاده کنید.

parentNode همیشه برای گره document مقدار null را برگشت می دهد چرا که هیچ والدی ندارد.

نکته: بالاترین گره های درخت DOM می توانید مستقیما به عنوان خصوصیات سند قابل دسترس باشند. برای مثال, المان <html> می تواند با document.documentElement قابل دسترس باشد. از آنجا که المان <head> می تواند با خصوصیت document.head قابل دسترس باشد. پس به المان <body> نیز با خصوصیت document.body دسترسی داشته باشید.

به هرحال, اگر می خواهید فقط گره های المان را بدست بیارید می توانید از parentElement بصورت زیر استفاده کنید:

 

دسترسی به گره های هم نیا (sibling)

می توانید از previousSibling و nextSibling  برای دسترسی گره های قبل و بعد در درخت DOM استفاده کنید.

می توانید از previousElementSibling و nextElementSibling برای دریافت المان های هم سطح قبلی و بعدی کناری استفاده کنید. اگر هیچ گره هم نیا (sibling) وجود نداشته باشد مقدار null را برگشت می دهد.

خصوصیت textContent محتوای متن یک گره و همه فرزندان آن را برگشت می دهد. در بخش دستکاری DOM می توانید بیشتر درباره آن یاد بگیرید.

 

انواع گره های DOM

درخت DOM شامل انواع مختلف گره ها مثل المان, متن, کامنت و غیره… است.

هر گره یک خصوصیت nodeType دارد که می توانید از آن برای پیدا کردن نوع گره استفاده کنید.

جدول زیر لیست بسیار کاملی از مهمترین نوع گره ها را نشان می دهد.

ثابت مقدار توضیح
ELEMENT_NODE ۱ یک گره المان مانند <p> یا <img>.
TEXT_NODE ۳ متن داخلی المان
COMMENT_NODE ۸ یک گره کامنت مثل <!-- some comment -->
DOCUMENT_NODE ۹ یک گره سند مثل والد سند <html>
DOCUMENT_TYPE_NODE ۱۰ یک نوع گره سند مثل <!DOCTYPE html> برای سند HTML5

 

امیدوارم  از آموزش نحوه پیمایش DOM در جاوا اسکریپت نهایت استفاده را برده باشید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوره های آموزشی