امتحان JS 3: التعامل مع DOM والأحداث (10 تمارين مركبة)
امتحان JS 3: التعامل مع DOM والأحداث
اختبر مهاراتك في التفاعل مع صفحة الويب، تعديل محتواها، والاستجابة لأفعال المستخدم.
تمرين 1
اختيار العناصر (Selecting Elements)
اكتب كود JS لاختيار العناصر التالية:
- عنصر يحمل المعرف `header` (استخدم `getElementById`).
- جميع العناصر التي تحمل الفئة `btn` (استخدم `querySelectorAll`).
- أول عنصر `p` في الصفحة (استخدم `querySelector`).
الحل
const header = document.getElementById("header");
const buttons = document.querySelectorAll(".btn");
const firstPara = document.querySelector("p");
تمرين 2
تغيير المحتوى (Changing Content)
لديك عنصر `h1` بالمعرف `title`:
- غير نصه الداخلي ليصبح "مرحباً بالعالم" (innerText).
- غير محتواه ليصبح `<span>مرحباً</span>` (innerHTML).
الحل
const title = document.getElementById("title");
title.innerText = "مرحباً بالعالم";
title.innerHTML = "<span>مرحباً</span>";
تمرين 3
تغيير الأنماط (Changing Styles)
غير تنسيق العنصر `box`:
- اجعل لون الخلفية أحمر (backgroundColor).
- اجعل حجم الخط 20px (fontSize).
- أخفِ العنصر تماماً (display = 'none').
الحل
const box = document.getElementById("box");
box.style.backgroundColor = "red";
box.style.fontSize = "20px";
box.style.display = "none";
تمرين 4
التعامل مع الفئات (Class Manipulation)
استخدم `classList` لتعديل فئات العنصر `item`:
- أضف الفئة `active`.
- أزل الفئة `hidden`.
- بدل حالة الفئة `selected` (toggle).
الحل
const item = document.getElementById("item");
item.classList.add("active");
item.classList.remove("hidden");
item.classList.toggle("selected");
تمرين 5
إنشاء وإضافة العناصر (Creating Elements)
أضف عنصراً جديداً للصفحة:
- أنشئ عنصر `li` جديد.
- أضف له النص "عنصر جديد".
- أضفه كابن لقائمة موجودة بالمعرف `list` (appendChild).
الحل
const newItem = document.createElement("li");
newItem.innerText = "عنصر جديد";
const list = document.getElementById("list");
list.appendChild(newItem);
تمرين 6
مستمع الأحداث (Event Listeners)
اجعل الزر `btn` تفاعلياً:
- أضف مستمع لحدث النقر (click).
- عند النقر، اطبع "تم النقر!" في الكونسول.
الحل
const btn = document.getElementById("btn");
btn.addEventListener("click", function() {
console.log("تم النقر!");
});
تمرين 7
التعامل مع المدخلات (Input Values)
اقرأ قيمة من حقل إدخال:
- لديك حقل إدخال `input` وزر.
- عند النقر على الزر، اقرأ القيمة الموجودة في الحقل (`value`).
- اعرضها في تنبيه (`alert`).
الحل
const input = document.getElementById("myInput");
const btn = document.getElementById("myBtn");
btn.addEventListener("click", function() {
alert(input.value);
});
تمرين 8
أحداث لوحة المفاتيح (Keyboard Events)
استمع لضغطات المفاتيح:
- أضف مستمع لحدث `keydown` على كامل المستند.
- اطبع اسم المفتاح المضغوط (`event.key`) في الكونسول.
الحل
document.addEventListener("keydown", function(event) {
console.log(event.key);
});
تمرين 9
منع السلوك الافتراضي (Prevent Default)
امنع نموذجاً من الإرسال:
- لديك نموذج `form`.
- عند حدث الإرسال (`submit`)، امنع الصفحة من إعادة التحميل باستخدام `event.preventDefault()`.
- اطبع "تم إيقاف الإرسال".
الحل
const form = document.getElementById("myForm");
form.addEventListener("submit", function(event) {
event.preventDefault();
console.log("تم إيقاف الإرسال");
});
تمرين 10
حذف العناصر (Removing Elements)
احذف عنصراً من الصفحة:
- عند النقر على العنصر `item`، قم بحذفه من DOM.
- استخدم `item.remove()` أو `item.parentElement.removeChild(item)`.
الحل
const item = document.getElementById("item");
item.addEventListener("click", function() {
item.remove();
});