Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. DOM: Intermediate
JavaScriptIntermediate

DOM: Intermediate

createElement, append, remove, replace, classList, dataset, DOM traversal — পেজ বদলানোর মাঝামাঝি কৌশল।

22টি অংশবাংলা ভাষায়

শুধু text বদলানো নয় — এবার element তৈরি, সাজানো, মুছে ফেলা আর tree-তে ঘোরা (traversal) শিখি। এটিই dynamic UI-র ভিত্তি।

createElement ও append

// নতুন element বানানো
const li = document.createElement("li");
li.textContent = "বাংলাদেশ";

// parent-এ যোগ
const ul = document.querySelector("ul");
ul.appendChild(li);       // শেষে
// ul.append(li);          // আধুনিক একাধিক-যোগ
// ul.prepend(li);         // শুরুতে

appendChild পুরনো, একটি করে element নেয়। append/prepend আধুনিক — string ও একাধিক element দুটোই নেয়।

remove ও replace

const old = document.querySelector(".old");
old.remove();       // মুছে দেয়


const banner = document.querySelector(".banner");
banner.replaceWith("নতুন টেক্সট");

// removeChild — parent থেকে
const parent = document.querySelector("ul");
if (parent.firstElementChild) {
  parent.removeChild(parent.firstElementChild);
}

insertAdjacentHTML

const list = document.querySelector("ul");

list.insertAdjacentHTML("beforeend", "<li>শেষে</li>");
list.insertAdjacentHTML("afterbegin", "<li>শুরুতে</li>");

// position: beforebegin / afterbegin / beforeend / afterend

classList

const box = document.querySelector(".box");

box.classList.add("active");
box.classList.remove("active");
box.classList.toggle("dark");     // নেই → যোগ, আছে → বাদ

console.log(box.classList.contains("dark")); // true/false
console.log(box.className); // সব class স্ট্রিং হিসেবে

classList-এ className-এর তুলনায় class যোগ-বাদ/টগল করা সহজ ও নিরাপদ — className-এ পুরো string বদল লাগে।

dataset — data-* attribute

<button data-user-id="42" data-role="admin">ব্যবহারকারী</button>

<script>
  const btn = document.querySelector("button");

  console.log(btn.dataset.userId); // "42"
  console.log(btn.dataset.role);   // "admin"

  btn.dataset.status = "active";   // data-status যোগ
</script>

data-* attribute-এ ডেটা রাখলে JS-এ dataset দিয়ে পাওয়া যায় — camelCase ম্যাপ হয় (user-id → userId)।

DOM Traversal

const card = document.querySelector(".card");

// Parent
console.log(card.parentElement);

// Children
console.log(card.children);   // HTMLCollection
console.log(card.firstElementChild);
console.log(card.lastElementChild);

// Sibling
console.log(card.nextElementSibling);
console.log(card.previousElementSibling);

// সব children লুপ
Array.from(card.children).forEach((child) => {
  console.log(child.tagName);
});

traversal-এর জন্য element-ভিত্তিক (...Element) property-গুলো ব্যবহার করুন — text node/whitespace বাদ যায়। children HTMLCollection, তাই এতে forEach নেই — Array.from(children) করুন।

নোড বানানোর প্যাটার্ন

function createItem(text, className = "") {
  const li = document.createElement("li");
  li.textContent = text;
  if (className) li.className = className;
  return li;
}

const items = ["আম", "কলা", "কমলা"];
const ul = document.querySelector("ul");
items.forEach((item) => ul.append(createItem(item)));
কাজমেথড
element তৈরিcreateElement
যোগappend / prepend / appendChild
মুছুনremove / removeChild
বদলানreplaceWith
classclassList.add/remove/toggle
datadataset
parent/child/sibling.parentElement.children` etc.
forEach + HTMLCollection

querySelectorAll-এর NodeList-এ forEach আছে, কিন্তু children-এর আওতায় নেই — Array.from(...) করে সব জায়গায় নিরাপদ।

Mini-project

একটি input + button লিখুন: বাটনে চাপলে input-এর টেক্সট দিয়ে নতুন <li> তৈরি ও list-এ যোগ হওয়া উচিত।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরDOM: Basics (ডম)পরেরDOM: Advanced (Dynamic DOM)
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com