مقدمه
در درس قبل با مفهوم کلی `Node` آشنا شدیم. نوع `Document` یکی از مهمترین انواع گره در DOM است که
از `Node` ارثبری میکند. این نوع، نمایندهی کل صفحه وب است و به عنوان ریشه درخت DOM عمل میکند.
در محیط مرورگر، ما از طریق شیء سراسری document به نمونهای از این نوع دسترسی داریم. این شیء
نقطه ورود ما برای هرگونه تعامل با محتوای صفحه است. هر عملیاتی، از پیدا کردن یک عنصر گرفته تا
تغییر عنوان صفحه، از طریق شیء document آغاز میشود.
پراپرتیهای شیء Document
شیء document دارای پراپرتیهای فراوانی است که اطلاعات مفیدی درباره سند و دسترسی سریع به
گرههای کلیدی آن را فراهم میکنند.
اطلاعات کلی سند
برخی پراپرتیها اطلاعات عمومی و متادیتای مربوط به صفحه را در اختیار ما قرار میدهند.
- title: عنوان سند را که در تگ `<title>` مشخص شده، نمایش میدهد یا تغییر میدهد.
- URL: آدرس کامل (URL) صفحه فعلی را به صورت فقط-خواندنی برمیگرداند.
- domain: نام دامنه سروری که سند از آن بارگذاری شده را برمیگرداند.
- lastModified: تاریخ و زمان آخرین تغییر سند را به صورت رشته برمیگرداند.
JAVASCRIPT
console.log(document.title);
console.log(document.URL);
document.title = "New Page Title";
همانطور که در کد بالا مشاهده میشود، میتوانیم به راحتی اطلاعاتی مانند عنوان و URL صفحه را
بخوانیم. همچنین پراپرتی `title` قابل نوشتن است و با تغییر آن، عنوان تب مرورگر نیز به صورت پویا
تغییر میکند.
دسترسی به عناصر اصلی
شیء `document` میانبرهایی برای دسترسی به گرههای اصلی و مهم صفحه ارائه میدهد:
- documentElement: همیشه به گره `<html>` در سند اشاره دارد.
- head: به گره `
<head>` اشاره دارد.
- body: به گره `
<body>` اشاره دارد.
JAVASCRIPT
console.log(document.documentElement.tagName);
console.log(document.head.tagName);
console.log(document.body);
این پراپرتیها روشی سریع و مطمئن برای رسیدن به ریشه سند (`<html>`) و فرزندان اصلی آن یعنی `head`
و `body` هستند و ما را از پیمایش در درخت بینیاز میکنند.
پیدا کردن عناصر در سند
یکی از اصلیترین وظایف شیء `document`، فراهم کردن متدهایی برای جستجو و پیدا کردن عناصر
(elements) در صفحه است. در ادامه متدهای کلاسیک و پرکاربرد این کار را بررسی میکنیم.
متدهای کلاسیک انتخاب عنصر
این متدها از اولین نسخههای DOM وجود داشتهاند و همچنان کاربرد گستردهای دارند.
- getElementById(id): یک عنصر را بر اساس مقدار `id` آن پیدا کرده
و برمیگرداند. از آنجایی که `id` باید یکتا باشد، این متد همیشه یک عنصر یا `null` (اگر عنصری
با آن `id` پیدا نشود) برمیگرداند.
- getElementsByTagName(tagName): تمام عناصر با نام تگ مشخص شده
(مثلاً 'p' برای تمام پاراگرافها) را پیدا کرده و یک `HTMLCollection` زنده (live) از آنها
برمیگرداند.
- getElementsByClassName(className): تمام عناصر با نام کلاس مشخص
شده را پیدا کرده و یک `HTMLCollection` زنده برمیگرداند.
`HTMLCollection` یک کالکشن شبیه به آرایه است. به آن "زنده" یا "live" میگویند چون اگر عنصری در
سند اضافه یا حذف شود، این کالکشن به صورت خودکار بهروزرسانی میشود.
JAVASCRIPT
const intro = document.getElementById('intro');
const allParagraphs = document.getElementsByTagName('p');
console.log(allParagraphs.length);
const highlightedElements = document.getElementsByClassName('highlight');
console.log(highlightedElements[0]);
کد بالا روش استفاده از هر سه متد را نشان میدهد. getElementById()
مستقیماً خود عنصر را برمیگرداند، در حالی که دو متد دیگر یک کالکشن برمیگردانند که میتوانیم با
ایندکس به اعضای آن دسترسی پیدا کنیم.
در این درس با شیء `document` به عنوان نقطه ورود به DOM، پراپرتیهای اطلاعاتی آن و روشهای کلاسیک
برای پیدا کردن عناصر آشنا شدیم. این متدها اساس کار با محتوای صفحه هستند. اما این تازه شروع کار
با عناصر است. در درس بعدی، به طور اختصاصی به سراغ نوع `Element` میرویم تا ببینیم پس از انتخاب
یک عنصر، چه ویژگیهایی دارد و چه کارهایی میتوانیم با آن انجام دهیم.