` এর সকল কোণাকুণি `` কে সিলেক্ট করতে হবে তারপর তাদের ব্যাকগ্রাউন্ড পরিবর্তন করবেন:
```js
// td should be the reference to the table cell
td.style.backgroundColor = 'red';
```
-The result should be:
+আউটপুট হবে এমন:
[iframe src="solution" height=180]
diff --git a/2-ui/1-document/03-dom-navigation/article.md b/2-ui/1-document/03-dom-navigation/article.md
index f7123d70d..cf75357dd 100644
--- a/2-ui/1-document/03-dom-navigation/article.md
+++ b/2-ui/1-document/03-dom-navigation/article.md
@@ -5,37 +5,37 @@ libs:
---
-# Walking the DOM
+# DOM এ নেভিগেশন
-The DOM allows us to do anything with elements and their contents, but first we need to reach the corresponding DOM object.
+DOM আমাদের সকল এলিমেন্ট এবং তাদের কন্টেন্ট কে পরিবর্তন, পরিমার্জন করতে দেয়,কিন্তু প্রথমে আমাদের DOM অবজেক্ট টির কাছে পৌঁছাতে হবে।
-All operations on the DOM start with the `document` object. That's the main "entry point" to DOM. From it we can access any node.
+DOM এর সকল অপারেশন `document` অবজেক্ট এর মাধ্যমে করতে হয়। এটিই DOM এর "entry point"। এর সাহায্যে আমরা যেকোন নোড অ্যাক্সেস করতে পারি।
-Here's a picture of links that allow for travel between DOM nodes:
+এখানে দেখুন কিভাবে আমরা DOM নোডে ট্রাভার্স করতে পারি:

-Let's discuss them in more detail.
+চলুন এ সম্পর্কে আরো বিস্তারিত জানি।
-## On top: documentElement and body
+## শুরুতে: documentElement এবং body
-The topmost tree nodes are available directly as `document` properties:
+ট্রি নোডের একদম উপরের নোড সমূহ সরাসরি `document` এর প্রপার্টি হিসেবে থাকে:
`` = `document.documentElement`
-: The topmost document node is `document.documentElement`. That's the DOM node of the `` tag.
+: একদম উপরের নোডটি হল `document.documentElement`। এটি দ্বারা `` ট্যাগকে নির্দেশিত করে।
`` = `document.body`
-: Another widely used DOM node is the `` element -- `document.body`.
+: আরেকটি বহুল ব্যবহৃত নোড হল `` এলিম্যান্ট -- `document.body`.
`` = `document.head`
-: The `` tag is available as `document.head`.
+: `` ট্যাগকে `document.head` এর মাধ্যমে অ্যাক্সেস করতে পারি।
-````warn header="There's a catch: `document.body` can be `null`"
-A script cannot access an element that doesn't exist at the moment of running.
+````warn header="`document.body` এর একটি ইরোর এটি `null` হতে পারে"
+স্ক্রিপ্ট যেসব এলিমেন্ট থাকে না তাদের অ্যাক্সেস করতে পারে না।
-In particular, if a script is inside ``, then `document.body` is unavailable, because the browser did not read it yet.
+যেমন, যদি `` এ স্ক্রিপ্ট ট্যাগের সাহায্যে আমাদের `document.body` কে অ্যাক্সেস করতে চাওয়া, কেননা ব্রাউজার আদৌ `body` ট্যাগ রেন্ডার করে না।
-So, in the example below the first `alert` shows `null`:
+সুতরাং, নিচের উদাহরণে `alert` এর মান হবে `null`:
```html run
@@ -43,7 +43,7 @@ So, in the example below the first `alert` shows `null`:
@@ -51,7 +51,7 @@ So, in the example below the first `alert` shows `null`:
@@ -59,18 +59,18 @@ So, in the example below the first `alert` shows `null`:
```
````
-```smart header="In the DOM world `null` means \"doesn't exist\""
-In the DOM, the `null` value means "doesn't exist" or "no such node".
+```smart header="DOM এ `null` বলতে বুঝায় \"DOM এ এর অস্তিত্ব নেই\""
+DOM এ `null` বলতে বুঝায় \"DOM এ এর অস্তিত্ব নেই\" অথবা "এমন কোন নোড নেই"।
```
## Children: childNodes, firstChild, lastChild
-There are two terms that we'll use from now on:
+এদের দুই ধরণের টার্ম আছে যা আমরা এখন দেখব:
-- **Child nodes (or children)** -- elements that are direct children. In other words, they are nested exactly in the given one. For instance, `` and `` are children of `` element.
-- **Descendants** -- all elements that are nested in the given one, including children, their children and so on.
+- **Child nodes (or children)** -- যা কোন এলিমেন্টের সরাসরি চাইল্ড এলিমেন্ট। অন্যথায় বলা যায়, অন্য একটির নেস্টেড হিসেবে থাকবে। যেমন, `` এবং `` হল `` এর চাইল্ড এলিমেন্ট।
+- **Descendants** -- সকল এলিমেন্ট, যারা একটার মধ্যে একটা তারমধ্যে আরেকটা এভাবে থাকে।
-For instance, here `` has children `` and ` ` (and few blank text nodes):
+যেমন, এখানে `` এর চাইল্ড নোড `` এবং ` ` এবং তাদেরও চাইল্ড নোড আছে:
```html run
@@ -86,11 +86,11 @@ For instance, here `` has children `` and ` ` (and few blank text
```
-...And descendants of `` are not only direct children ``, ` ` but also more deeply nested elements, such as `- ` (a child of `
`) and `` (a child of `- `) -- the entire subtree.
+...এবং এখানে `` এর সরাসরি চাইল্ড নোড `
`, ` ` না এখানে আরো নেস্টেড এলিমেন্ট আছে, যেমন `- ` (হল `
` এর চাইল্ড) এবং `` (হল `- ` এর চাইল্ড) -- এভাবেই ট্রি গঠিত হয়।
-**The `childNodes` collection lists all child nodes, including text nodes.**
+**`childNodes` কালেকশনে টেক্সট নোড সহ সকল চাইল্ড নোড থাকে**
-The example below shows children of `document.body`:
+নিচের উদাহরণে `document.body` এর সকল চাইল্ড নোড দেখব:
```html run
@@ -115,76 +115,76 @@ The example below shows children of `document.body`:
```
-Please note an interesting detail here. If we run the example above, the last element shown is `
````
-## Siblings and the parent
+## Siblings এবং Parent
-*Siblings* are nodes that are children of the same parent.
+*Siblings* হল একই প্যারেন্টের চাইল্ড নোডসমূহ।
-For instance, here `` and `` are siblings:
+যেমন, এখানে `` এবং `` হল *Siblings*:
```html
@@ -192,56 +192,56 @@ For instance, here `` and `` are siblings:
```
-- `` is said to be the "next" or "right" sibling of ``,
-- `` is said to be the "previous" or "left" sibling of ``.
+- `` কে বলা হবে `` এর "next" অথবা "right" *sibling*,
+- `` কে বলা হবে `` এর "previous" or "left" *sibling*।
-The next sibling is in `nextSibling` property, and the previous one - in `previousSibling`.
+`nextSibling` প্রপার্টিতে আমরা "next sibling" কে পায়, এবং `previousSibling` এ "previous sibling" কে পায়।
-The parent is available as `parentNode`.
+এবং `parentNode` প্রপার্টিতে প্যারেন্টকে পায়।
-For example:
+যেমন:
```js run
-// parent of is
+// এর প্যারেন্ট হল
alert( document.body.parentNode === document.documentElement ); // true
-// after goes
+// এর পর
alert( document.head.nextSibling ); // HTMLBodyElement
-// before goes
+// এর আগে
alert( document.body.previousSibling ); // HTMLHeadElement
```
-## Element-only navigation
+## এলিমেন্ট সমূহ শুধু নেভিগেশন করা যায়
-Navigation properties listed above refer to *all* nodes. For instance, in `childNodes` we can see both text nodes, element nodes, and even comment nodes if there exist.
+নেভিগেশন প্রপার্টি সমূহ *সকল* নোডকে রেফার করে। যেমন, `childNodes` এর প্রপার্টিতে আমরা টেক্সট নোড, এলিমেন্ট নোড এমনকি কমেন্ট নোড সমূহ পায়।
-But for many tasks we don't want text or comment nodes. We want to manipulate element nodes that represent tags and form the structure of the page.
+কিন্তু বেশিরভাগ ক্ষেত্রে আমাদের টেক্সট বা কমেন্ট নোডের দরকার পড়ে না। বেশিরভাগ ক্ষেত্রে আমরা এলিমেন্ট নোড সমূহকে ম্যানিপুলেট করি।
-So let's see more navigation links that only take *element nodes* into account:
+চলুন আরো কিছু নেভিগেশন প্রপার্টি দেখি যা শুধুমাত্র *element nodes* নিয়ে কাজ করে:

-The links are similar to those given above, just with `Element` word inside:
+এরা উপরের মতই কাজ করে, এবং প্রতিটি প্রপার্টিতে `Element` শব্দটি থাকে:
-- `children` -- only those children that are element nodes.
-- `firstElementChild`, `lastElementChild` -- first and last element children.
-- `previousElementSibling`, `nextElementSibling` -- neighbor elements.
-- `parentElement` -- parent element.
+- `children` -- শুধুমাত্র এলিমেন্ট নোডের চিলড্রেন।
+- `firstElementChild`, `lastElementChild` -- প্রথম এবং শেষ এলিমেন্টের চিলড্রেন।
+- `previousElementSibling`, `nextElementSibling` -- sibling এলিমেন্ট নোড।
+- `parentElement` -- প্যারেন্ট এলিমেন্ট।
-````smart header="Why `parentElement`? Can the parent be *not* an element?"
-The `parentElement` property returns the "element" parent, while `parentNode` returns "any node" parent. These properties are usually the same: they both get the parent.
+````smart header="`parentElement` কেন? প্যারেন্ট কি সর্বদা একটি এলিমেন্ট নই?"
+`parentElement` প্রপার্টি সর্বদা প্যারেন্ট "element" রিটার্ন করে, যেখানে `parentNode` যেকোন ধরণের প্যারেন্ট নোড রিটার্ন করে। আসলে দুটি প্রপার্টিই সাধারণত প্যারেন্টকে রিটার্ন করে।
-With the one exception of `document.documentElement`:
+`document.documentElement` এর ব্যাতিক্রম আছে:
```js run
alert( document.documentElement.parentNode ); // document
alert( document.documentElement.parentElement ); // null
```
-The reason is that the root node `document.documentElement` (``) has `document` as its parent. But `document` is not an element node, so `parentNode` returns it and `parentElement` does not.
+কেননা `document.documentElement` (``) এর রুট নোড হচ্ছে `document` এবং এটিই তার প্যারেন্ট। কিন্তু `document` এলিমেন্ট নোড না, সুতরাং `parentNode` *document* রিটার্ন করে আর `parentElement` *null* রিটার্ন করে।
-This detail may be useful when we want to travel up from an arbitrary element `elem` to ``, but not to the `document`:
+এখানে আমরা দেখছি `elem` তার প্যারেন্ট element হিসেবে `` পর্যন্ত যাবে, কিন্তু `document` দেখাবে না:
```js
while(elem = elem.parentElement) { // go up till
alert( elem );
@@ -249,7 +249,7 @@ while(elem = elem.parentElement) { // go up till
```
````
-Let's modify one of the examples above: replace `childNodes` with `children`. Now it shows only elements:
+চলুন উপরের উদাহরণটিতে `childNodes` এর পরিবর্তে `children` ব্যবহার করি। এখন এটি শুধু *elements* দেখাবে:
```html run
@@ -274,31 +274,31 @@ Let's modify one of the examples above: replace `childNodes` with `children`. No
```
-## More links: tables [#dom-navigation-tables]
+## আরো প্রপার্টি: tables [#dom-navigation-tables]
-Till now we described the basic navigation properties.
+এখনো পর্যন্ত আমরা প্রাথমিক নেভিগেশন প্রপার্টি দেখেছি।
-Certain types of DOM elements may provide additional properties, specific to their type, for convenience.
+কিছু নির্দিষ্ট DOM এলিমেন্টের নির্দিষ্ট প্রপার্টি আছে, যা দ্বারা আরো নির্দিষ্ট তথ্য জানতে পারি।
-Tables are a great example of that, and represent a particularly important case:
+*table* এলিমেন্ট এর একটি বাস্তবিক উদাহরন হতে পারে:
-**The `
`** element supports (in addition to the given above) these properties:
-- `table.rows` -- the collection of `` elements of the table.
-- `table.caption/tHead/tFoot` -- references to elements ``, ``, ` `.
-- `table.tBodies` -- the collection of `` elements (can be many according to the standard, but there will always be at least one -- even if it is not in the source HTML, the browser will put it in the DOM).
+**``** এর কিছু অতিরিক্ত প্রপার্টি আছে:
+- `table.rows` -- *table* এর `` এলিমেন্টের কালেকশন।
+- `table.caption/tHead/tFoot` -- ``, ``, ` ` এলিমেন্টের কালেকশন।
+- `table.tBodies` -- `` এলিমেন্টের কালেকশন (কমপক্ষে ১ টি এলিমেন্ট থাকবে, কেননা ব্রাউজার স্বয়ংক্রিয়ভাবে DOM এ *tbody* জেনারেট করে)।
-**``, ``, ``** elements provide the `rows` property:
-- `tbody.rows` -- the collection of `` inside.
+**``, ` `, ``** এলিমেন্ট সমূহ `rows` প্রপার্টি নির্দেশ করে:
+- `tbody.rows` -- ভিতরের `` এলিমেন্টের কালেকশন.
**` `:**
-- `tr.cells` -- the collection of `` and ` | ` cells inside the given ` | `.
-- `tr.sectionRowIndex` -- the position (index) of the given ` ` inside the enclosing `/ /`.
-- `tr.rowIndex` -- the number of the `` in the table as a whole (including all table rows).
+- `tr.cells` -- ` ` এর মধ্যকার`` এবং ` | ` সমূহ.
+- `tr.sectionRowIndex` -- `/ | /` এর মধ্যকার `` এর অবস্থান।
+- `tr.rowIndex` -- *table* এ ` ` এর অবস্থান।
**`` and ` | `:**
-- `td.cellIndex` -- the number of the cell inside the enclosing ` | `.
+- `td.cellIndex` -- ` ` এর মধ্যকার `` অবস্থান.
-An example of usage:
+একটি উদাহরণ:
```html run height=100
@@ -311,23 +311,23 @@ An example of usage:
```
-The specification: [tabular data](https://html.spec.whatwg.org/multipage/tables.html).
+আরো বিস্তারিত জানতে: [tabular data](https://html.spec.whatwg.org/multipage/tables.html)।
-There are also additional navigation properties for HTML forms. We'll look at them later when we start working with forms.
+এছাড়াও *HTML form* এরও নেভিগেশন প্রপার্টি আছে। পরবর্তীতে আমরা বিস্তারিত জানব এ ব্যাপারে।
-## Summary
+## সারাংশ
-Given a DOM node, we can go to its immediate neighbors using navigation properties.
+DOM নোডে আমরা নেভিগেশন প্রপার্টি সমূহ দ্বারা অ্যাক্সেস করতে পারি।
-There are two main sets of them:
+এদের প্রধান দুটি সেট হল:
-- For all nodes: `parentNode`, `childNodes`, `firstChild`, `lastChild`, `previousSibling`, `nextSibling`.
-- For element nodes only: `parentElement`, `children`, `firstElementChild`, `lastElementChild`, `previousElementSibling`, `nextElementSibling`.
+- সকল নোডের জন্য: `parentNode`, `childNodes`, `firstChild`, `lastChild`, `previousSibling`, `nextSibling`.
+- শুধুমাত্র এলিমেন্ট নোডের জন্য: `parentElement`, `children`, `firstElementChild`, `lastElementChild`, `previousElementSibling`, `nextElementSibling`.
-Some types of DOM elements, e.g. tables, provide additional properties and collections to access their content.
+এছাড়াও স্পেসিফিক কিছু DOM এলিমেন্টের কিছু নির্দিষ্ট প্রপার্টি আছে, যেমন: *table*, *form*।
| |