DEV Community

Cover image for জাভাস্ক্রিপ্ট DOM (ডকুমেন্ট অবজেক্ট মডেল)
Md. Rony
Md. Rony

Posted on • Edited on

জাভাস্ক্রিপ্ট DOM (ডকুমেন্ট অবজেক্ট মডেল)

ভূমিকা:
এই কোর্সে আমরা জাভাস্ক্রিপ্টের মাধ্যমে কীভাবে DOM (ডকুমেন্ট অবজেক্ট মডেল) এর সাথে ইন্টার‌্যাক্ট করা যায় তা শিখব। DOM হলো একটি ওয়েব পেজের HTML বা XML ডকুমেন্টের স্ট্রাকচার, যা জাভাস্ক্রিপ্টের মাধ্যমে পরিবর্তন, ম্যানিপুলেট ও আপডেট করা সম্ভব। এই ক্লাসটি বেসিক থেকে অ্যাডভান্সড লেভেল পর্যন্ত ডিজাইন করা হয়েছে।


DOM এর পরিচিতি:

টপিক:

  1. DOM কি?
  2. DOM এর স্ট্রাকচার
  3. জাভাস্ক্রিপ্ট এবং DOM এর মধ্যে সম্পর্ক

উদাহরণ:

  • HTML কোড এবং কীভাবে ব্রাউজার সেই HTML কোডকে DOM এ রূপান্তর করে।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এই HTML ফাইলটি একটি ডকুমেন্টের স্ট্রাকচার তৈরি করেছে, যা ব্রাউজার DOM এ রূপান্তর করে।

DOM এ এলিমেন্ট সিলেকশন:

টপিক:

  1. DOM থেকে এলিমেন্ট সিলেক্ট করার পদ্ধতি
  • getElementById()
  • getElementsByClassName()
  • getElementsByTagName()
  • querySelector()
  • querySelectorAll()

উদাহরণ:

  • HTML পেজ থেকে id, class, এবং tag এর মাধ্যমে এলিমেন্ট সিলেক্ট করা।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Element Selection</title>
</head>
<body>
    <h1 id="header">Welcome to DOM Manipulation</h1>
    <p class="content">This is a paragraph.</p>
    <p class="content">This is another paragraph.</p>

    <script>
        // getElementById
        const header = document.getElementById('header');
        console.log(header);

        // getElementsByClassName
        const paragraphs = document.getElementsByClassName('content');
        console.log(paragraphs);

        // getElementsByTagName
        const allParagraphs = document.getElementsByTagName('p');
        console.log(allParagraphs);

        // querySelector
        const firstParagraph = document.querySelector('.content');
        console.log(firstParagraph);

        // querySelectorAll
        const allContent = document.querySelectorAll('.content');
        console.log(allContent);
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এই উদাহরণে বিভিন্ন পদ্ধতি ব্যবহার করে DOM থেকে এলিমেন্ট সিলেক্ট করা হয়েছে।

DOM ম্যানিপুলেশন:

টপিক:

1.এলিমেন্ট এর কন্টেন্ট পরিবর্তন

  • innerHTML
  • textContent
  • innerText

2.নতুন এলিমেন্ট যুক্ত করা

  • createElement()
  • appendChild()

3.এলিমেন্ট রিমুভ করা

  • removeChild()

উদাহরণ:

  • HTML এলিমেন্টের টেক্সট পরিবর্তন করা, নতুন এলিমেন্ট যোগ করা, এবং বিদ্যমান এলিমেন্ট রিমুভ করা।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM Manipulation</title>
</head>
<body>
    <h1 id="header">Original Heading</h1>
    <p id="para">Original paragraph text.</p>

    <script>
        // Changing the content
        const header = document.getElementById('header');
        header.innerHTML = 'Updated Heading';

        const para = document.getElementById('para');
        para.textContent = 'Updated paragraph text.';

        // Adding a new element
        const newPara = document.createElement('p');
        newPara.textContent = 'This is a new paragraph added to the DOM.';
        document.body.appendChild(newPara);

        // Removing an element
        const oldPara = document.getElementById('para');
        document.body.removeChild(oldPara);
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এখানে আমরা শিখেছি কিভাবে DOM এর মধ্যে থাকা HTML এলিমেন্টগুলোর কন্টেন্ট আপডেট করতে হয়, নতুন এলিমেন্ট যোগ করতে হয়, এবং এলিমেন্ট রিমুভ করতে হয়।

ইভেন্ট হ্যান্ডলিং

টপিক:

1.ইভেন্ট কি?

2.ইভেন্ট হ্যান্ডলার যোগ করা

  • addEventListener()

3.ইভেন্টের ধরন

  • click, mouseover, mouseout, keydown, ইত্যাদি

উদাহরণ:

  • ইভেন্ট হ্যান্ডলার যোগ করা এবং ইভেন্টের উপর ভিত্তি করে DOM ম্যানিপুলেশন করা।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Event Handling</title>
</head>
<body>
    <button id="clickMe">Click Me</button>
    <p id="message"></p>

    <script>
        const button = document.getElementById('clickMe');
        const message = document.getElementById('message');

        button.addEventListener('click', function() {
            message.textContent = 'Button clicked!';
        });

        button.addEventListener('mouseover', function() {
            message.textContent = 'Mouse is over the button!';
        });

        button.addEventListener('mouseout', function() {
            message.textContent = '';
        });
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এই উদাহরণে আমরা ইভেন্ট হ্যান্ডলার ব্যবহার করে কীভাবে ইভেন্টের উপর ভিত্তি করে DOM ম্যানিপুলেশন করতে পারি তা শিখেছি।

DOM ট্রাভার্সাল

টপিক:

1.প্যারেন্ট এলিমেন্ট খুঁজে বের করা

  • parentNode

2.চাইল্ড এলিমেন্ট খুঁজে বের করা

  • childNodes
  • firstChild
  • lastChild

3.সিবলিংস খুঁজে বের করা

  • nextSibling
  • previousSibling

উদাহরণ:

  • DOM এর মধ্যে নেভিগেট করা এবং বিভিন্ন এলিমেন্ট খুঁজে বের করা।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM Traversal</title>
</head>
<body>
    <ul id="list">
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>

    <script>
        const list = document.getElementById('list');

        // Parent Node
        console.log(list.parentNode);

        // Child Nodes
        console.log(list.childNodes);

        // First and Last Child
        console.log(list.firstChild);
        console.log(list.lastChild);

        // Siblings
        const firstItem = list.firstChild;
        console.log(firstItem.nextSibling);
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এখানে আমরা DOM এর মধ্যে নেভিগেট করা এবং প্যারেন্ট, চাইল্ড এবং সিবলিংস এলিমেন্ট খুঁজে বের করার পদ্ধতি শিখেছি।

অ্যাডভান্সড DOM ম্যানিপুলেশন

টপিক:

1.ডাইনামিক স্টাইল পরিবর্তন

  • style প্রপার্টি

2.ক্লাস ম্যানিপুলেশন

  • classList.add()
  • classList.remove()
  • classList.toggle()

উদাহরণ:

  • DOM এর এলিমেন্টের স্টাইল পরিবর্তন করা এবং ক্লাস যোগ/রিমুভ করা।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Advanced DOM Manipulation</title>
    <style>
        .highlight {
            background-color: yellow;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <p id="text">Hover over this text to change its style.</p>

    <script>
        const text = document.getElementById('text');

        text.addEventListener('mouseover', function() {
            text.style.color = 'blue';
            text.classList.add('highlight');
        });

        text.addEventListener('mouseout', function() {
            text.style.color = '';
            text.classList.remove('highlight');
        });
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এখানে আমরা এলিমেন্টের স্টাইল ডাইনামিকভাবে পরিবর্তন করা এবং ক্লাস ম্যানিপুলেশন করার পদ্ধতি শিখেছি।

ফর্ম ডেটা ম্যানিপুলেশন এবং ভ্যালিডেশন

টপিক:

1.ফর্ম ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন
2.ফর্ম ভ্যালিডেশন

  • কাস্টম ভ্যালিডেশন মেসেজ
  • input ইভেন্ট
  • submit ইভেন্ট

উদাহরণ:

  • ফর্ম ডেটা কিভাবে ম্যানিপুলেট করতে হয় এবং ভ্যালিডেশন কিভাবে অ্যাপ্লাই করতে হয়।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Form Manipulation</title>
</head>
<body>
    <form id="myForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <button type="submit">Submit</button>
    </form>
    <p id="error"></p>

    <script>
        const form = document.getElementById('myForm');
        const username = document.getElementById('username');
        const error = document.getElementById('error');

        form.addEventListener('submit', function(event) {
            if (username.value === '') {
                error.textContent = 'Username is required';
                event.preventDefault();
            } else {
                error.textContent = '';
            }
        });

        username.addEventListener('input', function() {
            if (username.value !== '') {
                error.textContent = '';
            }
        });
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এখানে আমরা শিখেছি কিভাবে ফর্মের ডেটা ম্যানিপুলেট এবং ভ্যালিডেশন করা যায়।

অ্যাডভান্সড ইভেন্ট হ্যান্ডলিং এবং ডেলিগেশন

টপিক:

1.ইভেন্ট ডেলিগেশন
2.বাবলিং এবং ক্যাপচারিং
3.কাস্টম ইভেন্ট

উদাহরণ:

  • ইভেন্ট ডেলিগেশন ব্যবহার করে কিভাবে ইভেন্ট ম্যানেজ করতে হয় এবং কাস্টম ইভেন্ট কিভাবে তৈরি করা যায়।

কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Event Delegation</title>
</head>
<body>
    <ul id="list">
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>

    <script>
        const list = document.getElementById('list');

        list.addEventListener('click', function(event) {
            if (event.target.tagName === 'LI') {
                alert(event.target.textContent);
            }
        });
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

ব্যাখ্যা:

  • এখানে আমরা শিখেছি কিভাবে ইভেন্ট ডেলিগেশন এবং বাবলিং ম্যানেজ করতে হয়।

Top comments (12)

Collapse
 
sabbirmms profile image
Sabbir MMS

Nice and Attractive! 💥

Basic ea arektu clear hoye gelo.

Erokom clear conscious aro kichu documentation provide korle valo hoy inshallah. ❤
Sathe output embeds kore dile aro easy to understand hobe jodio ei documentation ta porei output imagine korte perechi.

Custom Map(); niye ekta in detail documentation dewar request roilo.

Eta amar bujhte kosto hocche.

Collapse
 
rezaul profile image
rezaul karim

সহজ ও সাবলীল ভাবে উপস্থাপন করার জন্য আপনাকে অসংখ্য ধন্যবাদ

Collapse
 
faruq_dev profile image
Omar Faruque • Edited

It's a very informative blog.

Thank you so much, sir.

Please write a detailed blog on the "Asynchronous JavaScript" topic.

Collapse
 
mdronyahmed profile image
Md. Rony

Thanks, In sha Allah

Collapse
 
md_abdulfahad_8f0822fb99 profile image
Md Abdul Fahad

Thanks for creating the document about DOM.

Collapse
 
mdronyahmed profile image
Md. Rony

Welcome

Collapse
 
gmmamunh profile image
Md Mamun Hossain

JavaScript Form Handling নিয়ে বিস্তারিত জানালে উপকার হতো।

Collapse
 
mdronyahmed profile image
Md. Rony

In Sha Allah

Collapse
 
gmmamunh profile image
Md Mamun Hossain

জাঝাকাল্লাহ

Collapse
 
mdronyahmed profile image
Md. Rony

Wa yiaaka

Collapse
 
milon7114 profile image
MD MILON MIA

Basic Content.

Collapse
 
mdronyahmed profile image
Md. Rony • Edited

Now added advanced topics