DOM در مرورگر و جاوا اسکریپت

DOM در مرورگر و جاوا اسکریپت
فهرست مقاله [نمایش]

     

    DOM چیست؟

    تعریف DOM و مخفف آن DOM، که مخفف عبارت Document Object Model است، یک ساختار درختی از تمام عناصر یک صفحه وب است که مرورگر ایجاد می‌کند. این ساختار به جاوا اسکریپت اجازه می‌دهد تا به عناصر صفحه دسترسی داشته باشد و آنها را تغییر دهد. با DOM می‌توانید عناصر صفحه وب را اضافه، حذف یا ویرایش کنید و صفحات وب پویا و جذاب بسازید. این مدل به عنوان نمایی از محتوای صفحه وب عمل می‌کند و هر عنصر را به صورتی که بتوانید با آن تعامل کنید، نمایش می‌دهد.

    معرفی Document Object Model و اهمیت آن 

    Document Object Model به عنوان پل ارتباطی بین HTML، CSS و جاوا اسکریپت عمل می‌کند. اهمیت DOM در این است که به برنامه‌نویسان امکان می‌دهد تا صفحات وب را به صورت دینامیک و تعاملی بسازند. بدون DOM، جاوا اسکریپت نمی‌تواند به عناصر HTML دسترسی پیدا کند و آنها را دستکاری نماید. DOM همچنین به شما اجازه می‌دهد که به تمام عناصر و ویژگی‌های صفحه دسترسی داشته باشید و آن‌ها را بر اساس نیاز خود تغییر دهید. این قابلیت به شما اجازه می‌دهد که به راحتی وب‌سایت‌های مدرن و تعاملی طراحی کنید که بتوانند پاسخگوی نیازهای کاربران باشند.

     یک تصویر از ساختار درختی DOM که عناصر HTML را نشان می‌دهد.

     

    درخت DOM چیست؟

    بررسی ساختار درختی DOM

     DOM به شکل یک درخت از نودها (گره‌ها) سازماندهی شده است که هر کدام از این گره‌ها می‌تواند یک عنصر، متن یا خصوصیت باشد. این ساختار درختی به برنامه‌نویسان اجازه می‌دهد تا به صورت سلسله مراتبی به عناصر دسترسی داشته باشند و آنها را ویرایش کنند. این ساختار باعث می‌شود که بتوانید به سادگی به هر بخشی از صفحه وب دسترسی پیدا کرده و تغییرات مورد نظر را اعمال کنید. همچنین این درخت به شما امکان می‌دهد تا تمام بخش‌های صفحه را به صورت لایه‌به‌لایه مرور کنید و تغییرات دقیق‌تری اعمال نمایید.

    نحوه سازماندهی و نمایش عناصر صفحه وب در درخت DOM

     هر صفحه وب به عنوان یک درخت از عناصر HTML نمایش داده می‌شود که ریشه این درخت، عنصر <html> است. تمام عناصر صفحه به عنوان فرزندان این ریشه سازماندهی شده‌اند و این ساختار کمک می‌کند تا جاوا اسکریپت بتواند به صورت دقیق با هر بخش از صفحه تعامل داشته باشد. به عنوان مثال، عنصر <body> به عنوان فرزند عنصر <html> است و تمام عناصر داخل <body> نیز به عنوان فرزندان آن در نظر گرفته می‌شوند. این ساختار سلسله‌مراتبی باعث می‌شود که عناصر صفحه به شکل قابل مدیریت‌تری سازماندهی شوند و شما بتوانید به راحتی به هر عنصر دسترسی پیدا کنید.

    ک نمودار درختی ساده از عناصر HTML که نشان‌دهنده ارتباط بین <html>, <head>, و <body> و عناصر داخلی آن‌ها است تا درک ساختار درختی آسان‌تر شود.

    کاربرد DOM در جاوا اسکریپت

    چگونه DOM به جاوا اسکریپت اجازه می‌دهد عناصر صفحه را دستکاری کند

     جاوا اسکریپت می‌تواند با استفاده از متدهای DOM به عناصر HTML دسترسی پیدا کند و آنها را تغییر دهد. برای مثال، می‌توانیم از متد getElementById برای یافتن یک عنصر خاص و سپس ویرایش محتویات یا خصوصیات آن استفاده کنیم. DOM با فراهم کردن این متدها به جاوا اسکریپت این امکان را می‌دهد که تغییرات مختلفی را روی صفحه وب اعمال کند. این تغییرات می‌توانند شامل اضافه کردن یا حذف کردن عناصر، تغییر محتوا یا حتی تغییر استایل و ظاهر عناصر باشند. علاوه بر این، رویدادهای جاوا اسکریپت مانند click و mouseover می‌توانند به DOM متصل شوند تا تعاملات پویا با کاربران ایجاد شود. به همین دلیل است که DOM یکی از مهم‌ترین ابزارهای موجود برای توسعه وب پویا است.

    مثال‌های عملی از دسترسی به عناصر با getElementById و دستکاری خصوصیات

     فرض کنید می‌خواهید متن یک عنصر با شناسه title را تغییر دهید. می‌توانید این کار را به راحتی با کد زیر انجام دهید:

    let element = document.getElementById('title');
    element.innerHTML = 'متن جدید';

    این کد باعث می‌شود که متن عنصر با شناسه title به 'متن جدید' تغییر کند. همچنین می‌توانید با استفاده از متدهای دیگر، ویژگی‌های مختلفی را تغییر دهید، مثل رنگ متن یا اندازه فونت. برای مثال:

    element.style.color = 'red';
    element.style.fontSize = '20px';

    این دستورات رنگ متن را به قرمز و اندازه فونت را به ۲۰ پیکسل تغییر می‌دهند.

    https://bugeto.net/images/2024/2024-10/bugeto-dom-click-change.gif

    تفاوت بین DOM و BOM

    DOM و BOM چیست؟

     BOM یا Browser Object Model به مدل اشیای مرورگر اشاره دارد که به شما اجازه می‌دهد با قسمت‌های مختلف مرورگر مثل پنجره، تاریخچه و موقعیت جغرافیایی تعامل داشته باشید. برخلاف DOM که با عناصر HTML سروکار دارد، BOM مستقیماً به مرورگر و ویژگی‌های آن مرتبط است. BOM شامل عناصری مثل window، navigator، و location است که به شما امکان می‌دهند تا با مرورگر کار کنید، مثل باز کردن یا بستن پنجره‌ها یا دسترسی به اطلاعات کاربر.

    تفاوت‌ها و کاربردهای هر یک در مرورگر 

    تفاوت اصلی بین DOM و BOM این است که DOM برای تعامل با محتوای صفحه استفاده می‌شود، در حالی که BOM برای تعامل با ویژگی‌های مرورگر به کار می‌رود. برای مثال، از BOM می‌توانید برای تغییر اندازه پنجره مرورگر یا دسترسی به URL فعلی استفاده کنید. از سوی دیگر، از DOM برای تغییر محتوا و ساختار صفحه وب استفاده می‌شود. این تفاوت‌ها باعث می‌شوند که هر کدام از این مدل‌ها کاربردهای خاص خود را در توسعه وب داشته باشند و به شکل مکملی برای توسعه‌دهندگان عمل کنند.

     

    تفاوت اصلی بین DOM و BOM

    رویدادها و تعاملات با DOM

    DOMContentLoaded چیست و چرا مهم است؟ رویداد DOMContentLoaded زمانی اتفاق می‌افتد که تمام عناصر HTML صفحه به صورت کامل بارگذاری شده باشند، بدون نیاز به بارگذاری تمام تصاویر و منابع دیگر. این رویداد برای اجرای کد جاوا اسکریپت در زمان مناسب بسیار اهمیت دارد، چرا که تضمین می‌کند که تمام عناصر صفحه برای دسترسی آماده هستند. این رویداد به شما کمک می‌کند تا مطمئن شوید که دسترسی به عناصر صفحه قبل از اینکه بارگذاری شوند، انجام نمی‌شود که باعث خطاهای احتمالی در کد می‌شود.

    بررسی رویدادهای مختلف و نحوه اجرای کد در زمان مناسب

     رویدادهای مختلفی در مرورگر وجود دارند که می‌توانید از آنها برای تعامل با DOM استفاده کنید، مثل click، mouseover، و load. هر کدام از این رویدادها به شما امکان می‌دهد تا به نوع خاصی از تعاملات پاسخ دهید و تجربه کاربری بهتری فراهم کنید.

    به عنوان مثال، می‌توانید از رویداد click برای دستکاری DOM استفاده کنید:

    document.getElementById('myButton').addEventListener('click', () => {
      let newElement = document.createElement('p');
      newElement.innerHTML = 'این یک پاراگراف جدید است';
      document.body.appendChild(newElement);
    });

    این کد باعث می‌شود که با کلیک بر روی دکمه‌ای با شناسه myButton، یک پاراگراف جدید به صفحه اضافه شود. برای مثال، رویداد click زمانی اتفاق می‌افتد که کاربر روی یک عنصر کلیک می‌کند و شما می‌توانید کدی را اجرا کنید که واکنش مناسب را به این رویداد نشان دهد. رویداد load زمانی رخ می‌دهد که همه محتوای صفحه، شامل تصاویر و دیگر منابع، به صورت کامل بارگذاری شده باشند.

     

    آموزش دستکاری DOM (DOM Manipulation)

    معرفی متدهای پرکاربرد برای دستکاری DOM

     برای دستکاری DOM، می‌توانید از متدهایی مثل appendChild برای اضافه کردن یک عنصر جدید، و removeChild برای حذف یک عنصر استفاده کنید. این متدها به شما کمک می‌کنند تا عناصر صفحه را به صورت دینامیک تغییر دهید. برای مثال، می‌توانید یک عنصر جدید به صفحه اضافه کنید یا یک عنصر خاص را از آن حذف کنید. متدهای دیگری مثل replaceChild نیز به شما امکان می‌دهند که یک عنصر را با عنصر دیگری جایگزین کنید. این قابلیت‌ها برای توسعه وب تعاملی بسیار کاربردی هستند.

    نحوه تغییر خصوصیات و استایل‌ها با getComputedStyle

     برای دسترسی به استایل‌های محاسبه‌شده یک عنصر می‌توانید از متد getComputedStyle استفاده کنید. این متد به شما اجازه می‌دهد تا مقادیر نهایی خصوصیات CSS که توسط مرورگر محاسبه شده است را دریافت کنید. به عنوان مثال، اگر بخواهید بدانید یک عنصر دقیقاً چه رنگی دارد، می‌توانید از getComputedStyle استفاده کنید:

    let element = document.getElementById('myElement');
    let style = window.getComputedStyle(element);
    console.log(style.color);

    این کد رنگ محاسبه‌شده عنصر myElement را در کنسول چاپ می‌کند.

    تصویر پیشنهادی: یک مثال تصویری از تغییر استایل یک عنصر با استفاده از جاوا اسکریپت.

    مثال‌های عملی و کاربردی DOM

    ایجاد یک نمونه کوچک برای دستکاری DOM به عنوان مثال، فرض کنید می‌خواهید یک دکمه به صفحه اضافه کنید که با کلیک روی آن، یک عنصر جدید به لیست اضافه شود:

    let button = document.createElement('button');
    button.innerHTML = 'اضافه کردن آیتم';
    document.body.appendChild(button);
    
    button.addEventListener('click', () => {
      let newItem = document.createElement('li');
      newItem.innerHTML = 'آیتم جدید';
      document.getElementById('myList').appendChild(newItem);
    });

    این کد یک دکمه ایجاد می‌کند که با کلیک روی آن، یک آیتم جدید به لیست اضافه می‌شود. همچنین می‌توانید از روش‌های دیگری برای اضافه کردن ویژگی‌های مختلف به عناصر استفاده کنید. برای مثال، می‌توانید به دکمه استایل بدهید یا آن را به شکل خاصی نمایش دهید.

    تمرین‌هایی برای کاربران جهت تقویت مهارت در دستکاری DOM

    با استفاده از getElementById و innerHTML متن یک عنصر را تغییر دهید.

    یک لیست ایجاد کنید و با کلیک روی دکمه‌ای، آیتم‌های جدید به آن اضافه کنید.

    از removeChild برای حذف یک عنصر از صفحه استفاده کنید.

    با استفاده از setAttribute یک خصوصیت جدید به یک عنصر اضافه کنید و تاثیر آن را مشاهده کنید.

    با استفاده از رویداد mouseover رنگ یک عنصر را هنگام حرکت ماوس تغییر دهید.

     

     

    نتیجه‌گیری

    DOM یکی از مهم‌ترین بخش‌های تعامل مرورگر با صفحات وب است و یادگیری نحوه استفاده از آن می‌تواند به شما کمک کند تا صفحات وب پویاتر و تعاملی‌تری ایجاد کنید. با تسلط بر دستکاری DOM، می‌توانید تجربه کاربری بهتری فراهم کنید و به عنوان یک توسعه‌دهنده وب حرفه‌ای تر عمل کنید. DOM به شما این امکان را می‌دهد که به طور کامل کنترل محتوای صفحه وب را به دست بگیرید و تغییرات لازم را به صورت دینامیک و در زمان واقعی اعمال کنید.

    برای ادامه یادگیری، پیشنهاد می‌کنیم از فریمورک Blazor استفاده کنید که به شما امکان می‌دهد برنامه‌های تعاملی و مدرن بسازید و DOM را به شکلی ساده‌تر مدیریت کنید. Blazor به ویژه برای برنامه‌نویسان سی‌شارپ که به دنبال ایجاد وب‌سایت‌های پویا هستند، بسیار مناسب است. برای آشنایی بیشتر با Blazor می‌توانید به مقاله معرفی Blazor مراجعه کنید. همچنین، اگر علاقه‌مند به یادگیری عمیق‌تر و حرفه‌ای هستید، دوره سه‌ماهه مسترکلاس Blazor که به صورت جامع تمامی مباحث مورد نیاز را پوشش می‌دهد، در دسترس شماست.

     

    کد کامل مثال ها:

    
    
    <!DOCTYPE html>
    <html lang="fa">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>تمرینات عملی DOM و جاوا اسکریپت</title>
    </head>
    <body>
        <h1>تمرینات عملی DOM و جاوا اسکریپت</h1>
    
        <h2>مثال‌های عملی از دسترسی به عناصر و دستکاری خصوصیات</h2>
        <div id="title">این متن قرار است تغییر کند</div>
        <button onclick="changeText()">تغییر متن</button>
    
        <script>
            function changeText() {
                let element = document.getElementById('title');
                element.innerHTML = 'متن جدید';
                element.style.color = 'red';
                element.style.fontSize = '20px';
            }
        </script>
    
        <h2>ایجاد و افزودن عناصر جدید به صفحه</h2>
        <button id="addButton">اضافه کردن پاراگراف جدید</button>
    
        <script>
            document.getElementById('addButton').addEventListener('click', () => {
                let newElement = document.createElement('p');
                newElement.innerHTML = 'این یک پاراگراف جدید است';
                document.body.appendChild(newElement);
            });
        </script>
    
        <h2>افزودن آیتم‌های جدید به لیست</h2>
        <ul id="myList">
            <li>آیتم اولیه</li>
        </ul>
        <button id="addItemButton">اضافه کردن آیتم جدید به لیست</button>
    
        <script>
            document.getElementById('addItemButton').addEventListener('click', () => {
                let newItem = document.createElement('li');
                newItem.innerHTML = 'آیتم جدید';
                document.getElementById('myList').appendChild(newItem);
            });
        </script>
    </body>
    </html>
    اطلاعات نویسنده
    • نویسنده: تیم تحریریه باگتو

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران