dom چیست ؟
dom چیست و به چه دردی میخوره؟ 
dom چیست،اگه تا حالا با جاوا اسکریپت کار کرده باشی یا حتی یه صفحه وب ساده ساخته باشی، حتماً اسم DOM رو شنیدی. شاید برات سوال باشه که اصلاً DOM چیه؟ چه کاربردی داره؟ و چطور میشه باهاش کار کرد؟
خیلی ساده بخوام بگم، DOM همون چیزیـه که به ما اجازه میده با صفحه وب ارتباط برقرار کنیم! یعنی چی؟ یعنی میتونیم با استفاده از جاوا اسکریپت، المانهای صفحه رو تغییر بدیم، حذف کنیم، یا چیزهای جدید بهش اضافه کنیم. خلاصه، DOM مغز متفکر تعامل بین جاوا اسکریپت و HTMLـه! 
حالا که یه دید کلی پیدا کردی، بریم سراغ توضیحات دقیقتر و حرفهایتر. 
DOM چیست؟ 
DOM مخفف Document Object Model به معنی “مدل شیءگرای سند” است. این مفهوم، ساختاری از صفحه وب را بهصورت یک درخت (Tree) نمایش میدهد که در آن هر بخش از HTML مثل تگها، متنها و ویژگیها بهعنوان یک شیء (Object) در نظر گرفته میشوند.
به زبان ساده، وقتی یک صفحه وب بارگذاری میشود، مرورگر آن را به یک ساختار درختی تبدیل میکند که برنامهنویس میتواند از طریق جاوا اسکریپت آن را دستکاری کند.
فهرست مطالب
ارائه خدمات مشاوره کسب و کار رایگان در جهت توسعه فروش، رشد کسب و کار و تغییر موقعیت برند شما پنج شنبه های هر هفته
ساختار کلی dom
DOM مخفف Document Object Model به معنی “مدل شیءگرای سند” است. این مفهوم، ساختاری از صفحه وب را بهصورت یک درخت (Tree) نمایش میدهد که در آن هر بخش از HTML مثل تگها، متنها و ویژگیها بهعنوان یک شیء (Object) در نظر گرفته میشوند.
به زبان ساده، وقتی یک صفحه وب بارگذاری میشود، مرورگر آن را به یک ساختار درختی تبدیل میکند که برنامهنویس میتواند از طریق جاوا اسکریپت آن را دستکاری کند.
ساختار کلی DOM
Document → ریشهی اصلی که کل سند را شامل میشود.
Element → هر تگ HTML مثل <div>، <p>، <h1> و …
Attribute → ویژگیهای المانها مثل class، id و …
Text → متنی که داخل یک المان قرار دارد.
تفاوت بین HTML و DOM چیه؟ 
HTML فقط یک سند است که شامل تگها و محتوا میشود.
DOM نمایشی از HTML در حافظه مرورگر است که میتوان آن را تغییر داد.
مثال: وقتی یک صفحه HTML باز میکنی، مرورگر اون رو به DOM تبدیل میکنه. اگر با جاوا اسکریپت مقدار یک <p> رو تغییر بدی، این تغییر روی DOM اعمال میشه، نه مستقیماً روی فایل HTML!
دسترسی به عناصر DOM در جاوا اسکریپت 
برای کار با DOM در جاوا اسکریپت، از روشهای زیر استفاده میکنیم:
روش getElementById()
let myElement = document.getElementById("myID" );
این روش برای گرفتن یک المان خاص با id مشخص استفاده میشه.
روش getElementsByClassName()
let items = document. getElementsByClassName(" myClass");
این روش همهی المانهای دارای کلاس مشخص رو بهصورت یک مجموعه (Collection) برمیگردونه.
روش querySelector() و querySelectorAll()
let firstElement = document.querySelector(". myClass"); // اولین المان با این کلاس
let allElements = document.querySelectorAll(". myClass"); // همه المانهای دارای این کلاس
این روشها انعطافپذیرتر و مدرنتر هستن و شبیه CSS Selector عمل میکنن.
تغییر محتوای عناصر در DOM 
بعد از گرفتن یک عنصر، میتونیم محتوای اون رو تغییر بدیم:
تغییر متن با innerText
document.getElementById("myID" ).innerText = "متن جدید!";
فقط متن داخل المان رو تغییر میده.
تغییر HTML داخلی با innerHTML
document.getElementById("myID" ).innerHTML = "<strong>متن جدید!</strong>";
هم متن و هم تگهای HTML رو تغییر میده.
تغییر استایل عناصر با DOM 
میتونیم با استفاده از جاوا اسکریپت، استایلهای CSS رو تغییر بدیم:
document.getElementById("myID" ).style.color = "red";
document.getElementById("myID" ).style.fontSize = "20px";
با این روش میشه استایل هر عنصری رو تغییر داد.
اضافه و حذف کردن عناصر در DOM 
گاهی لازمه که به صفحه المان اضافه کنیم یا المانهای اضافی رو حذف کنیم.
اضافه کردن یک المان جدید
let newElement = document.createElement("p");
newElement.innerText = "یک پاراگراف جدید!";
document.body.appendChild( newElement);
این کد یک <p> جدید به انتهای body اضافه میکنه.
حذف کردن یک المان
let element = document.getElementById("myID" );
element.remove();
این کد المانی که id=”myID” داره رو حذف میکنه.
کار با رویدادها در DOM 
با استفاده از رویدادها (Events) میتونیم به کلیکها، حرکت ماوس، تایپ کردن و … واکنش نشون بدیم.
رویداد click
document.getElementById(" myButton").addEventListener(" click", function() {
alert("روی دکمه کلیک شد!");
});
وقتی روی دکمه کلیک بشه، یه پیام نمایش داده میشه.
ویژگیهای پیشرفته DOM 
DOM قابلیتهای زیادی داره، از جمله:
کار با کلاسها:
document.getElementById("myID" ).classList.add("newClass");
document.getElementById("myID" ).classList.remove("oldClass") ;
کار با ویژگیهای المانها:
document.getElementById(" myLink").setAttribute("href", "https://example.com");
این کد مقدار href یک لینک رو تغییر میده.
بهترین روشها برای کار با DOM 
همیشه از querySelector() و querySelectorAll() برای دسترسی به المانها استفاده کن.
تا جایی که ممکنه، تغییرات DOM رو بهصورت گروهی انجام بده تا سرعت افزایش پیدا کنه.
از رویدادهای Delegation برای عملکرد بهتر استفاده کن.
آموزش dom در جاوا اسکریپت
dom ساختار محتوای صفحات وب را به صورت درختی نمایش میدهد و به زبانهای برنامهنویسی مانند جاوا اسکریپت این امکان را میدهد که به عناصر HTML دسترسی پیدا کنند و آنها را تغییر دهند. به زبان ساده، DOM نمایی از یک صفحه وب به صورت آبجکتهایی است که میتوان آنها را با استفاده از کد جاوا اسکریپت بررسی، ویرایش، حذف یا اضافه کرد.
وقتی مرورگر یک فایل HTML را بارگذاری میکند، آن را به یک درخت DOM تبدیل میکند. هر تگ HTML به عنوان یک “node” (گره) در این درخت نمایش داده میشود. گرهها میتوانند عناصر (مثل <div>، <p>)، متن، ویژگیها و… باشند. برای دسترسی به این گرهها از متدهایی مثل getElementById()، getElementsByClassName()، querySelector() و دیگر ابزارهای مشابه استفاده میشود.
مثلاً با استفاده از document.getElementById("demo") میتوان به عنصری که id آن “demo” است دست پیدا کرد و سپس با استفاده از innerHTML یا textContent محتوای آن را تغییر داد. همچنین DOM این امکان را فراهم میکند که به رویدادهایی مانند کلیک کاربر، حرکت موس یا ورود دادهها واکنش نشان دهیم و تعامل پویا بین کاربر و صفحه ایجاد کنیم.
با استفاده از DOM میتوان بهصورت پویا عناصر جدید به صفحه اضافه کرد، کلاسهای CSS را تغییر داد، ویژگیها را بهروزرسانی کرد یا حتی ساختار کلی صفحه را تغییر داد. بنابراین یادگیری DOM برای هر توسعهدهنده فرانتاند ضروری است، زیرا پایهی تعامل جاوا اسکریپت با صفحات وب محسوب میشود.
DOM این امکان را میدهد که جاوا اسکریپت بتواند عناصر HTML را شناسایی کند و با تغییر محتوا، ویژگیها یا ظاهر آنها، صفحات وب را بهصورت پویا و تعاملی مدیریت کند.
ارائه خدمات اندیشه دیجی