مهمتك
هذه المرة لا مادة جديدة. ستحصل على قائمة مهام، وتعرف كل ما تحتاجه. هكذا يبدو عمل المطور الحقيقي: متطلبات وتجميعها مما تعرفه.
الجزء المطلوب 🎯
مرّ على موقعك وتأكد أن التعاويذ الخمس من هذا المستوى حية عليه:
- السكربت مربوط على كل صفحة ولا أخطاء في console (F12 – لا شيء أحمر).
- الوضع الداكن – مبدّل في الرأس على كل صفحة، والاختيار يُتذكّر.
- زر أو عدّاد تفاعلي – تعويذة واحدة على الأقل بمتغير وشرط.
- معرض صور مع lightbox – النقر يكبّر الصورة.
- اختبار أو نموذج مع validation – واحد على الأقل. يمكنك الاثنين!
امتدادات اختيارية 🌟
اختر واحداً على الأقل (أو ابتكر):
تحية حسب وقت اليوم
الموقع يحيّي بطريقة مختلفة صباحاً ومساءً:
<p id="day-greeting"></p>
const dayGreeting = document.getElementById("day-greeting");
const hour = new Date().getHours();
if (hour < 9) {
dayGreeting.textContent = "Good morning! ☀️";
} else if (hour < 18) {
dayGreeting.textContent = "Hi there, have a nice day!";
} else {
dayGreeting.textContent = "Good evening! 🌙";
}
new Date() يرجع التاريخ والوقت الحالي، .getHours() يسحب الساعة.
رسالة عشوائية عند النقر
نكتة، فكرة رحلة، أو هتاف فريق مختلف في كل مرة:
const messages = [
"Practice makes perfect!",
"Let's go, Eagles! 🦅",
"You miss every shot you don't take.",
"Fans are the twelfth player.",
];
const messageButton = document.getElementById("message-button");
const messageEl = document.getElementById("message");
messageButton.addEventListener("click", () => {
const random = Math.floor(Math.random() * messages.length);
messageEl.textContent = messages[random];
});
Math.random() يرجع رقماً عشوائياً بين 0 و1، وباقي السطر يحوّله لموضع عشوائي في array.
عدّاد زيارات (لك أنت فقط)
كم مرة فتحت موقعك؟ احفظه في localStorage:
let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");
Number(...) يحوّل نصاً من الذاكرة لرقم، و?? 0 يعني “إن لم يكن شيء، ابدأ من صفر.”
قسم قابل للطي (accordion)
أخفِ قائمة طويلة أو roster تحت عنوان قابل للنقر:
const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");
sectionHeading.addEventListener("click", () => {
sectionContent.classList.toggle("hidden");
});
لديك class .hidden { display: none !important; } من درس المعرض.
ارفع النسخة الجديدة إلى الإنترنت
موقعك على GitHub Pages لا يزال النسخة القديمة من المستوى 1! ارفع الجديد:
- افتح repository على github.com،
- Add file → Upload files،
- اسحب الملفات المتغيّرة (mainly
script.js،style.css، وكل.html) واضغط Commit changes.
خلال دقيقة، تعاويذك تعمل للجميع.
تهانينا، أيها الساحر! 🪄 موقعك لم يعد جميلاً فقط – بل حي. يتفاعل مع النقرات، يتذكّر الاختيارات، يسأل ويجيب. وتعرف كيف يعمل كل سطر. في المستوى 3 – Master، ستتعلّم بناء مواقع كالمحترفين: React، components، وخادمك الخاص.
ما ستخرج به من هذا المستوى
- JavaScript: متغيرات، شروط، functions، arrays، objects، loops – أساسيات كل البرمجة.
- صيغة التعويذة: أوجد عنصراً → استمع لحدث → اتخذ إجراء.
localStorageللتذكّر،querySelectorAll+forEachلمجموعات عناصر، فحص مدخلات النموذج.
© 2026 Ing. Martin Polak / AlgoRhino · شروط استخدام المحتوى