⏳ التكرار السحري – تعلم setInterval للأطفال
🎉 مرحباً من جديد يا أبطال!
في المقالة السابقة تعرفنا على setTimeout
التي تجعل الكمبيوتر ينتظر قليلاً ثم يقوم بتنفيذ أمر واحد فقط.
اليوم سنتعلم أداة جديدة تشبهها لكنها أقوى: setInterval
.
هذه الأداة تسمح لنا أن نكرر شيئاً بشكل مستمر كل فترة زمنية. إنها مثل ساعة تدق كل ثانية! 🕒
🔎 ما هي setInterval؟
setInterval
هي دالة (function) في JavaScript تجعل الكمبيوتر يشغل كود معين مرات متكررة كل فترة زمنية نحددها (بالملّي ثانية).
الصيغة الأساسية:
setInterval(function() {
// الكود الذي نريد تكراره
}, الوقت_بالملّي_ثانية);
⚡ الفرق الأساسي بين setTimeout
وsetInterval
:
- setTimeout
يعمل مرة واحدة فقط.
- setInterval
يكرر الكود مراراً كل فترة زمنية.
📝 مثال بسيط
لنكتب رسالة في الشاشة كل ثانيتين:
setInterval(function() {
console.log("مرحباً كل ثانيتين! 🎉");
}, 2000);
النتيجة: في الـ console ستظهر الرسالة "مرحباً كل ثانيتين!" بشكل متكرر بدون توقف.
🔢 عداد بسيط
لنصنع عداداً يزيد كل ثانية:
<p id="counter">0</p>
<script>
let count = 0;
setInterval(function() {
count++;
document.getElementById("counter").textContent = count;
}, 1000);
</script>
كل ثانية سيزيد الرقم في الشاشة بمقدار واحد ⏰.
🎨 تغيير الألوان بشكل متكرر
لنغير لون الخلفية كل ثانية بشكل عشوائي:
function getRandomColor() {
let colors = ["pink", "lightgreen", "lightyellow", "lightblue", "lavender"];
let randomIndex = Math.floor(Math.random() * colors.length);
return colors[randomIndex];
}
setInterval(function() {
document.body.style.backgroundColor = getRandomColor();
}, 1000);
كل ثانية سيتغير لون الخلفية 🎨.
🎮 لعبة صغيرة – ساعة حقيقية
يمكننا صنع ساعة رقمية تتحدث كل ثانية:
<p id="clock"></p>
<script>
setInterval(function() {
let now = new Date();
let time = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
document.getElementById("clock").textContent = time;
}, 1000);
</script>
بهذا الشكل صنعت ساعتك الخاصة ⏰!
🚀 تحريك عنصر بشكل متكرر
يمكننا جعل مربع يتحرك تلقائياً إلى اليمين كل نصف ثانية:
<div id="box" style="width:50px; height:50px; background:red; position:relative;"></div>
<script>
let pos = 0;
setInterval(function() {
pos += 10;
document.getElementById("box").style.left = pos + "px";
}, 500);
</script>
كل نصف ثانية سيتحرك المربع 10 بكسل. 🟥➡️
🛑 إيقاف setInterval – clearInterval
أحياناً نريد إيقاف التكرار. لذلك نستخدم clearInterval
.
مثال: عداد يتوقف بعد الوصول إلى 10.
<p id="countNum">0</p>
<script>
let num = 0;
let myInterval = setInterval(function() {
num++;
document.getElementById("countNum").textContent = num;
if (num === 10) {
clearInterval(myInterval);
}
}, 1000);
</script>
العد سيتوقف عند الرقم 10 🛑.
🎈 لعبة البالونات الطائرة
لنصنع لعبة تظهر فيها بالونات جديدة كل ثانية، وعليك النقر عليها لتختفي:
<div id="balloonGame" style="height:300px; border:1px solid black; position:relative;"></div>
<script>
setInterval(function() {
let balloon = document.createElement("span");
balloon.textContent = "🎈";
balloon.style.position = "absolute";
balloon.style.left = Math.random() * 250 + "px";
balloon.style.top = Math.random() * 250 + "px";
balloon.style.fontSize = "30px";
balloon.addEventListener("click", function() {
balloon.remove();
});
document.getElementById("balloonGame").appendChild(balloon);
}, 1000);
</script>
كل ثانية يظهر بالون جديد في مكان عشوائي. حاول أن تنقر عليها بسرعة قبل أن تملأ الشاشة! 😃
🎲 لعبة النرد (Dice)
لنصنع لعبة يلعب فيها الكمبيوتر النرد كل 3 ثوانٍ:
<p id="diceResult"></p>
<script>
setInterval(function() {
let dice = Math.floor(Math.random() * 6) + 1;
document.getElementById("diceResult").textContent = "🎲 رقم النرد: " + dice;
}, 3000);
</script>
كل 3 ثوانٍ سترى نتيجة جديدة وكأنك تلعب النرد مع الكمبيوتر! 🎮
💡 أفكار ممتعة لتجربة setInterval
- اصنع عد تنازلي يبدأ من 10 حتى 0 ثم يعرض "انتهى الوقت!".
- غيّر صورة كل ثانية لتصنع عرضاً متحركاً (slideshow).
- اجعل شخصية كرتونية تتحرك يميناً ويساراً بشكل تلقائي.
- ادمج
setInterval
معclearInterval
لصنع سباق محدود بالوقت.
📝 الخلاصة
- setInterval
تكرر الكود كل فترة زمنية نحددها.
- الفرق بينها وبين setTimeout
: الأولى تتكرر، الثانية تعمل مرة واحدة فقط.
- يمكننا إيقافها باستخدام clearInterval
.
- باستخدامها يمكننا صنع عدادات، ساعات، ألعاب، وحركات رائعة.
- هذه الأداة تجعل صفحاتك تنبض بالحياة ✨ وتفتح الباب لأفكار لا تنتهي! 🚀