JavaScript HTML DOM هدایت
- صفحه قبلی گزارشگر رویدادهای DOM
- صفحه بعدی نوید DOM
با HTML DOM، شما میتوانید از روابط گره برای جستجو در درخت گرهها استفاده کنید
نوید DOM
بر اساس استاندارد HTML DOM W3C، همه چیز در سند HTML به عنوان گره در نظر گرفته میشوند:
- کل سند گرهای از نوع document است
- هر عنصر HTML گرهای از نوع element است
- متن داخل عناصر HTML گرهای از نوع text است
- هر属性 HTML گرهای از نوع attribute است
- تمام نظرات گرههای نظری هستند

با HTML DOM، همه گرههای درخت گرهها از طریق JavaScript قابل دسترسی هستند
میتوان گرههای جدید ایجاد کرد و همه گرهها را ویرایش و حذف کرد
روابط گره
گرههای درخت گرهها با یکدیگر روابط سلسله مراتبی دارند
- واژگان (والد، فرزند و برادر، parent، child و sibling) برای توصیف این روابط استفاده میشوند
- در درخت گرهها، گره بالایی به عنوان ریشه (گره ریشه) نامیده میشود
- هر گره والد دارد، به جز ریشه (گره ریشه هیچ والد ندارد)
- گرهها میتوانند تعداد مشخصی از فرزند داشته باشند
- برادر (برادر یا خواهر) به معنای گرههایی است که والد مشترک دارند.
<html> <head> <title>آموزش DOM</title> </head> <body> <h1>درس اول DOM</h1> <p>سلام دنیا!</p> </body> </html>

از HTML بالا شما میتوانید اطلاعات زیر را بخوانید:
- <html> گره ریشه است
- <html> هیچ والد ندارد
- <html> والد <head> و <body> است
- همهچیز در <head> است و اولین فرزند <html> است
- <body> آخرین فرزند <html> است
همچنین:
- <head> یک فرزند دارد: <title>
- <title> یک فرزند (گرهی متنی) دارد: "آموزش DOM"
- <body> دو فرزند دارد: <h1> و <p>
- <h1> یک فرزند دارد: "DOM اولین درس"
- <p> یک فرزند دارد: "Hello world!"
- <h1> و <p> همتایان هستند
جستجو بین گرهها
با استفاده از JavaScript، میتوانید از ویژگیهای گره برای جستجو بین گرهها استفاده کنید:
- parentNode
- childNodes[nodenumber]
- firstChild
- lastChild
- nextSibling
- previousSibling
فرزند و ارزش گره
یک خطای رایج در پردازش DOM این است که تصور میکنند عناصر شامل متن هستند.
مثال:
<title id="demo">آموزش DOM</title>
عنصر <title> (در مثال بالا) شامل نیستمتن.
که شامل متن "آموزش DOM" است:گرهی متنی.
متن یک گرهی متنی میتواند از طریق innerHTML
برای دسترسی به ویژگیها از
var myTitle = document.getElementById("demo").innerHTML;
دسترسی به ویژگی innerHTML معادل دسترسی به اولین فرزند است: nodeValue
:
var myTitle = document.getElementById("demo").firstChild.nodeValue;
همچنین میتوانید به این صورت به اولین فرزند دسترسی داشته باشید:
var myTitle = document.getElementById("demo").childNodes[0].nodeValue;
در سه مثال زیر، برای <h1>
تنظیم متن عنصر و کپی کردن به <p>
در عنصر:
مثال 1
<html> <body> <h1 id="id01">مستند اولین صفحه من</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; </script> </body> </html>
مثال 2
<html> <body> <h1 id="id01">مستند اولین صفحه من</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue; </script> </body> </html>
مثال 3
<html> <body> <h1 id="id01">مستند اولین صفحه من</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; </script> </body> </html>
InnerHTML
در این آموزش، ما از innerHTML
محتوای عنصر HTML را بازیابی کنید.
اما، یادگیری روشهای دیگر در بالا به شما کمک میکند تا ساختار درختی DOM و جستجو در آن را درک کنید.
نقطه ریشه DOM
دو ویژگی خاص وجود دارند که به شما اجازه میدهند به مستند کامل دسترسی داشته باشید:
- document.body - بدنه مستند
- document.documentElement - مستند کامل
مثال
<html> <body> <p>Hello World!</p> <div> <p>DOM بسیار مفید است!</p> <p>این مثال نمایشدهنده <b>document.body</b> است.</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html>
مثال
<html> <body> <p>Hello World!</p> <div> <p>DOM بسیار مفید است!</p> <p>این مثال نمایشدهنده <b>document.documentElement</b> است.</p> </div> <script> alert(document.documentElement.innerHTML); </script> </body> </html>
نوعنمای nodeName
nodeName
نوعنمای name نام نقطه را مشخص میکند.
- nodeName فقط خواندنی است.
- nodeName نقطهی عنصر برابر نام برچسب است.
- nodeName نقطهی ویژگی نام ویژگی است.
- nodeName نقطهی متن همیشه #text است.
- nodeName نقطهی مستند همیشه #document است.
مثال
<h1 id="id01">ایراننما اولین وبسایت من</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; </script>
توجه:nodeName همیشه نام بزرگترین عنصر HTML را شامل میشود.
نوعنمای nodeValue
nodeValue
نوعنمای value ارزش نقطه را مشخص میکند.
- نوعنمای عنصر nodeValue undefined است.
- نوعنمای متن nodeValue متن نوشتاری دارد.
- نوعنمای nodeValue ارزش نقطه را دارد.
نوعنمای nodeType
نوعنمای nodeType
نوعنمای nodeType نوع نقطه را برمیگرداند.نوعنمای nodeType
فقط خواندنی است.
مثال
<h1 id="id01">ایراننما اولین وبسایت من</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script>
مهمترین ویژگی nodeType است:
نوید | نوع | مثال |
---|---|---|
ELEMENT_NODE | 1 | <h1 class="heading">W3School</h1> |
ATTRIBUTE_NODE | 2 | class = "heading" (منسوخ شده) |
TEXT_NODE | 3 | W3School |
COMMENT_NODE | 8 | <!-- این یک نظریه است --> |
DOCUMENT_NODE | 9 | مستند HTML خود (پدر <html>) |
DOCUMENT_TYPE_NODE | 10 | <!DOCTYPE html> |
Type 2 در HTML DOM منسوخ شده است. در XML DOM منسوخ نشده است.
- صفحه قبلی گزارشگر رویدادهای DOM
- صفحه بعدی نوید DOM