انتقل إلى المحتوى

٧.٢ الوصول إلى العناصر

سنستخدم مستند HTML التالي في هذا الدرس:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Awesome boxes</title>
    <style>
       #boxes-container{
         display: flex;
       }
       .box{
         width: 10rem;
         height: 10rem;
         margin: 1rem;
       }
       #box-1{
         background: black;
       }
       #box-2{
         background: red;
       }
       #box-3{
         background: green;
       }
       #box-4{
         background: pink;
       }
       #box-5{
         background: cyan;
       }
       #box-6{
         background: orange;
       }
    </style>
  </head>
  <body>
    <header>
      <h1>Welcome to our awesome boxes website</h1>
      <p>We have amazing boxes of different elegant colors</p>
    </header>
    <section id="boxes-container">
      <div class="box" id="box-1"></div>
      <div class="box" id="box-2"></div>
      <div class="box" id="box-3"></div>
      <div class="box" id="box-4"></div>
      <div class="box" id="box-5"></div>
      <div class="box" id="box-6"></div>
    </section>
    <script src="script.js"></script>
  </body>
</html>

تمثيل صفحة ويب باستخدام DOM

باستخدام id

التمرين 1: اطبع عنصر حاوية الصناديق. تلميح: استخدم document.getElementById("boxes-container").

let container = document.getElementById("boxes-container");
console.log(container);

النتيجة هي: <section id="boxes-container">

document.getElementById("id")

العامل document.getElementById() تُرجع أول عنصر يطابق معرّفه id القيمة المحدّدة.

التمرين 2: اطبع عنصر الصندوق الأول.

let box1 = document.getElementById("box-1");
console.log(box1);

النتيجة هي: <div id="box-1" class="box"></div>

التمرين 3: اطبع عنصر الصندوق الثاني.

let box2 = document.getElementById("box-2");
console.log(box2);

النتيجة هي: <div id="box-2" class="box"></div>

التمرين 4: غيّر لون خلفية الصندوق الرابع إلى DarkViolet. تلميح: استخدم element.style.backgroundColor="DarkViolet".

let box4 = document.getElementById("box-4");
box4.style.backgroundColor = "DarkViolet";

تغيّر لون خلفية الصندوق الرابع إلى DarkViolet.

التمرين 5: غيّر لون خلفية الصندوق السادس إلى Olive.

let box6 = document.getElementById("box-6");
box6.style.backgroundColor = "Olive";

تغيّر لون خلفية الصندوق السادس إلى olive.

التمرين 6: ما العنصر الأب للصندوق الخامس؟ تلميح: استخدم element.parentElement.

let box5 = document.getElementById("box-5");
let box5Parent = box5.parentElement;
console.log(box5Parent);

النتيجة هي: <section id="boxes-container">

التمرين 7: ما العنصر الأب للصندوق الثاني؟

let box2 = document.getElementById("box-2");
let box2Parent = box2.parentElement;
console.log(box2Parent);

النتيجة هي: <section id="boxes-container">


باستخدام اسم الصنف

التمرين 8: اجلب جميع الصناديق. تلميح: استخدم document.getElementsByClassName("box").

let boxes = document.getElementsByClassName("box");
console.log(boxes);

النتيجة هي: HTMLCollection { 0: div#box-1.box, 1: div#box-2.box, 2: div#box-3.box, 3: div#box-4.box, 4: div#box-5.box, 5: div#box-6.box, length: 6, … }

document.getElementsByClassName("class")

العامل document.getElementsByClassName() تُرجع HTMLCollection بالعناصر التي تحمل أسماء الأصناف المحدّدة.

المجموعة HTMLCollection

كائن شبيه بالمصفوفة يمثّل مجموعة عناصر HTML.

التمرين 9: ارجع إلى التمرين 8؛ حوّل HTMLCollection إلى مصفوفة عادية باستخدام Array.from(htmlCollection).

let boxes = document.getElementsByClassName("box");
let boxesArray = Array.from(boxes);

console.log(boxesArray);

النتيجة هي: Array(6) [ div#box-1.box, div#box-2.box, div#box-3.box, div#box-4.box, div#box-5.box, div#box-6.box ]

التمرين 10: ارجع إلى التمرين 9؛ اعرض عناصر boxesArray. تلميح: استخدم for...of.

let boxes = document.getElementsByClassName("box");
let boxesArray = Array.from(boxes);

for( let box of boxesArray){
  console.log(box);
}

النتيجة كما يلي:

<div class="box" id="box-1">
<div class="box" id="box-2">
<div class="box" id="box-3">
<div class="box" id="box-4">
<div class="box" id="box-5">
<div class="box" id="box-6">

التمرين 11: ما أبناء حاوية الصناديق؟ تلميح: استخدم element.children

let container = document.getElementById("boxes-container");
let containerChildren = container.children;

console.log(containerChildren);

النتيجة هي: HTMLCollection { 0: div#box-1.box, 1: div#box-2.box, 2: div#box-3.box, 3: div#box-4.box, 4: div#box-5.box, 5: div#box-6.box,

التمرين 12: ارجع إلى التمرين 11؛ اعرض عناصر containerChildren.

let container = document.getElementById("boxes-container");
let containerChildren = container.children;
let containerChildrenArray = Array.from(containerChildren);

for(let el of containerChildrenArray){
  console.log(el);
}

النتيجة كما يلي:

<div class="box" id="box-1">
<div class="box" id="box-2">
<div class="box" id="box-3">
<div class="box" id="box-4">
<div class="box" id="box-5">
<div class="box" id="box-6">

باستخدام اسم الوسم

التمرين 13: اجلب جميع عناصر div في المستند. تلميح: استخدم document.getElementsByTagName("div")

let divS = document.getElementsByTagName("div");

console.log(divS);

النتيجة هي: HTMLCollection { 0: div#box-1.box, 1: div#box-2.box, 2: div#box-3.box, 3: div#box-4.box, 4: div#box-5.box, 5: div#box-6.box,

document.getElementsByTagName("tag")

العامل document.getElementsByTagName() تُرجع HTMLCollection بالعناصر التي تحمل اسم الوسم المحدّد.

التمرين 14: ارجع إلى التمرين 13؛ اعرض عناصر divS .

let divS = document.getElementsByTagName("div");
let divSArray = Array.from(divS);

for(let el of divSArray){
  console.log(el);
}

النتيجة كما يلي:

<div class="box" id="box-1">
<div class="box" id="box-2">
<div class="box" id="box-3">
<div class="box" id="box-4">
<div class="box" id="box-5">
<div class="box" id="box-6">

التمرين 15: اجلب جميع عناصر section .

let sections = document.getElementsByTagName("section");

console.log(sections);

النتيجة هي: HTMLCollection [section#boxes-container, boxes-container: section#boxes-container]

التمرين 16: ارجع إلى التمرين 15؛ اعرض أول عنصر في sections.

let sections = document.getElementsByTagName("section");

let sectionsArray = Array.from(sections);
let firstSection = sectionsArray[0];

console.log(firstSection);

النتيجة هي: <section id=​"boxes-container">​…</section>​

التمرين 17: اختصر شيفرة task 16 .

let sections = document.getElementsByTagName("section");
let firstSection = Array.from(sections)[0];

console.log(firstSection);

النتيجة هي: <section id=​"boxes-container">​…</section>​

التمرين 18: ارجع إلى التمرين 17؛ ما العناصر الأبناء لـ firstSection?

let sections = document.getElementsByTagName("section");
let firstSection = Array.from(sections)[0];
let firstSectionChildren = firstSection.children;

console.log(firstSectionChildren);

النتيجة هي: HTMLCollection(6) [div#box-1.box, div#box-2.box, div#box-3.box, div#box-4.box, div#box-5.box, div#box-6.box ....]

التمرين 19: اختصر شيفرة task 18 ، واعرض كل عنصر في firstSectionChildren سطر مستقل.

let sections = document.getElementsByTagName("section");
let firstSectionChildren = Array.from(sections)[0].children;

for(let el of firstSectionChildren){
  console.log(el);
}

النتيجة كما يلي:

<div class="box" id="box-1">
<div class="box" id="box-2">
<div class="box" id="box-3">
<div class="box" id="box-4">
<div class="box" id="box-5">
<div class="box" id="box-6">

باستخدام querySelector

التمرين 20: اجلب الصندوق الأول في boxes-container. تلميح: استخدم document.querySelector("#boxes-container > #box-1").

let box1 = document.querySelector("#boxes-container > #box-1");

console.log(box1);

النتيجة هي: <div class="box" id="box-1"></div>

التمرين 21: اجلب الصندوق الثالث في boxes-container.

let box3 = document.querySelector("#boxes-container > #box-3");

console.log(box3);

النتيجة هي: <div class="box" id="box-3"></div>

التمرين 22: اجلب الصندوق الخامس في boxes-container.

let box5 = document.querySelector("#boxes-container > #box-5");

console.log(box5);

النتيجة هي: <div class="box" id="box-5"></div>

التمرين 23: اجلب الصندوق الثامن في boxes-container.

let box8 = document.querySelector("#boxes-container > #box-8");

console.log(box8);

النتيجة هي: null

querySelector

العامل document.querySelector("Selector") تُرجع أول عنصر يطابق محدّد CSS. وإذا لم يوجد تطابق، تُرجع null.

التمرين 24: اجلب h1 داخل header باستخدام querySelector.

let h1 = document.querySelector("header > h1");

console.log(h1);

النتيجة هي: <h1>Welcome to our awesome boxes website</h1>

التمرين 25: اجلب p في header باستخدام querySelector.

let p = document.querySelector("header > p");

console.log(p);

النتيجة هي: <p>We have amazing boxes of different elegant colors</p>

التمرين 26: أعد تنفيذ التمرين 25 دون استخدام querySelector.

let p = document.getElementsByTagName("header")[0].getElementsByTagName("p")[0];

console.log(p);

النتيجة هي: <p>We have amazing boxes of different elegant colors</p>


باستخدام querySelectorAll

التمرين 27: اجلب جميع عناصر divS في boxes-container باستخدام document.querySelectorAll("#boxes-container > div").

let divS = document.querySelectorAll("#boxes-container > div");

console.log(divS);

النتيجة هي: NodeList(6) [div#box-1.box, div#box-2.box, div#box-3.box, div#box-4.box, div#box-5.box, div#box-6.box]

querySelectorAll

العامل document.querySelectorAll("Selector") تُرجع NodeList بالعناصر المطابقة لمحدّدات CSS.

القائمة NodeList

مجموعة من عُقَد المستند.

التمرين 28: اجلب جميع عناصر .box في boxes-container باستخدام querySelectorAll

let boxes = document.querySelectorAll("#boxes-container > .box");

console.log(boxes);

النتيجة هي: NodeList(6) [div#box-1.box, div#box-2.box, div#box-3.box, div#box-4.box, div#box-5.box, div#box-6.box]

التمرين 29: اجلب جميع عناصر h1 داخل header باستخدام querySelectorAll.

let h1List = document.querySelectorAll("header h1");

console.log(h1List);

النتيجة هي: NodeList [h1]

التمرين 30: اجلب جميع عناصر p داخل header باستخدام querySelectorAll.

let pList = document.querySelectorAll("header p");

console.log(pList);

النتيجة هي: NodeList [p]