✅ ما هو setInterval
؟
setInterval
هي دالة في JavaScript تُستخدم لتنفيذ كود بشكل متكرر كل فترة زمنية معينة (بالملي ثانية)، إلى أن يتم إيقافها باستخدام clearInterval
.
📌 الصيغة العامة:
let intervalID = setInterval(callback, delay, arg1, arg2, ...);
JavaScriptشرح المعاملات:
المعامل | الوصف |
---|---|
callback | الدالة التي سيتم تنفيذها كل فترة |
delay | الزمن بين كل تنفيذ (بالملي ثانية) |
arg1, arg2… | قيم يتم تمريرها للدالة (اختياري) |
intervalID | رقم يُستخدم لإلغاء التكرار لاحقًا باستخدام clearInterval |
✅ مثال بسيط:
setInterval(() => {
console.log("كل 2 ثانية");
}, 2000); // كل 2 ثانية
JavaScript✅ مثال باستخدام دالة باسم:
function greet(name) {
console.log("مرحباً " + name);
}
setInterval(greet, 3000, "ياسين");
JavaScript❌ ما هو clearInterval
؟
تُستخدم لإيقاف التكرار الذي بدأته باستخدام setInterval
.
📌 الصيغة:
clearInterval(intervalID);
JavaScript✅ مثال عملي:
let intervalID = setInterval(() => {
console.log("لن تستمر طويلاً!");
}, 1000);
setTimeout(() => {
clearInterval(intervalID);
console.log("تم الإيقاف بعد 5 ثواني");
}, 5000);
JavaScript🧪 مثال تفاعلي: ساعة رقمية حية
<div id="clock"></div>
<script>
function showTime() {
const now = new Date();
document.getElementById("clock").innerText = now.toLocaleTimeString();
}
setInterval(showTime, 1000); // تحدث كل ثانية
</script>
JavaScript🧠 استخدام شائع: زر لبدء/إيقاف المؤقت
<button onclick="start()">ابدأ</button>
<button onclick="stop()">أوقف</button>
<div id="counter">0</div>
<script>
let count = 0;
let intervalId;
function start() {
intervalId = setInterval(() => {
count++;
document.getElementById("counter").innerText = count;
}, 1000);
}
function stop() {
clearInterval(intervalId);
}
</script>
JavaScript⚠️ ملاحظات مهمة:
setInterval
لن ينتظر انتهاء الكود داخلcallback
، مما قد يسبب تداخلًا إذا كان التنفيذ يستغرق وقتًا طويلًا.- استخدم
clearInterval
دائمًا عند الانتهاء لتجنب تسريب الذاكرة أو التكرار غير المرغوب.
🔄 الفرق بين setTimeout
و setInterval
الخاصية | setTimeout | setInterval |
---|---|---|
التنفيذ | مرة واحدة فقط | بشكل متكرر |
الإيقاف | باستخدام clearTimeout | باستخدام clearInterval |
التأخير | يبدأ بعد فترة ثم ينفذ | يبدأ بعد فترة ويتكرر بعدها |
⏲️ مثال 1: عداد يزيد كل ثانية
let count = 0;
setInterval(() => {
count++;
console.log("العدد الحالي: " + count);
}, 1000); // كل ثانية
JavaScript⏳ مثال 2: ساعة رقمية حقيقية
<p id="clock"></p>
<script>
setInterval(() => {
const now = new Date();
document.getElementById("clock").innerText = now.toLocaleTimeString();
}, 1000);
</script>
JavaScript🔁 مثال 3: تغيير لون الخلفية كل ثانية
<body id="page" style="transition: 0.5s;"></body>
<script>
setInterval(() => {
const color = "#" + Math.floor(Math.random()*16777215).toString(16);
document.getElementById("page").style.backgroundColor = color;
}, 1000);
</script>
JavaScript🟢 مثال 4: تحديث عنصر كل 2 ثانية
<p id="status">جارٍ التحديث...</p>
<script>
let counter = 0;
setInterval(() => {
counter++;
document.getElementById("status").innerText = `تم التحديث ${counter} مرة ✅`;
}, 2000);
</script>
JavaScript🛑 مثال 5: إيقاف المؤقت بعد عدد مرات باستخدام clearInterval
let i = 0;
let interval = setInterval(() => {
console.log("تشغيل رقم " + i);
i++;
if (i >= 5) {
clearInterval(interval); // إيقاف بعد 5 مرات
console.log("تم الإيقاف 🛑");
}
}, 1000);
JavaScript🎮 مثال 6: حركة بسيطة لمربع كل ثانية
<div id="box" style="width:50px; height:50px; background:red; position:absolute; left:0;"></div>
<script>
let pos = 0;
setInterval(() => {
pos += 10;
document.getElementById("box").style.left = pos + "px";
}, 500);
</script>
JavaScript