✅ ما هو setTimeout
؟
هي دالة مدمجة في JavaScript تُستخدم لتنفيذ كود مرة واحدة فقط بعد تأخير معين (بالمللي ثانية).
📌 الصيغة العامة:
let timeoutID = setTimeout(callback, delay, arg1, arg2, ...);
JavaScriptشرح المعاملات:
المعامل | الوصف |
---|---|
callback | الدالة التي سيتم تنفيذها |
delay | الزمن قبل تنفيذ الدالة (بالملي ثانية) |
arg1, arg2… | القيم التي سيتم تمريرها للدالة (اختياري) |
timeoutID | رقم يُستخدم لإلغاء التايمر لاحقًا باستخدام clearTimeout |
✅ مثال بسيط:
setTimeout(function() {
console.log("مرحباً بعد 3 ثواني");
}, 3000); // 3000ms = 3 ثواني
JavaScript✅ مثال باستخدام دالة باسم معين:
function sayHello(name) {
console.log("مرحباً " + name);
}
setTimeout(sayHello, 2000, "ياسين");
JavaScript❌ ما هو clearTimeout
؟
تُستخدم لإلغاء مؤقّت setTimeout
قبل أن يتم تنفيذه.
📌 الصيغة:
clearTimeout(timeoutID);
JavaScript✅ مثال على الإلغاء:
let timeoutID = setTimeout(() => {
console.log("لن يتم تنفيذ هذا");
}, 5000);
clearTimeout(timeoutID); // تم الإلغاء قبل التنفيذ
JavaScript🧠 استخدام شائع: زر لإلغاء مؤقّت
<button onclick="startTimer()">ابدأ المؤقت</button>
<button onclick="cancelTimer()">إلغاء</button>
<script>
let timerId;
function startTimer() {
timerId = setTimeout(() => {
alert("تم التنفيذ بعد 5 ثواني");
}, 5000);
}
function cancelTimer() {
clearTimeout(timerId);
alert("تم إلغاء المؤقّت");
}
</script>
JavaScript⚠️ ملاحظات هامة:
delay
يتم حسابه بالـ milliseconds (1000 ms = 1 ثانية).- الدالة تُنفّذ مرة واحدة فقط، وليس بشكل متكرر (إذا أردت تكرار استخدم
setInterval
). - إذا كان الوقت =
0
، فإن JavaScript ستنتظر إلى أن ينتهي الكود الحالي أولًا (غير فوري تمامًا).
🧪 تمرين متقدم: عد تنازلي مؤقت باستخدام setTimeout
<div id="counter">5</div>
<script>
let count = 5;
function countdown() {
document.getElementById("counter").innerText = count;
count--;
if (count >= 0) {
setTimeout(countdown, 1000);
} else {
alert("انتهى الوقت!");
}
}
countdown();
</script>
JavaScript✅ 2. تغيير محتوى عنصر في الصفحة:
<p id="msg">جاري التحميل...</p>
<script>
setTimeout(() => {
document.getElementById("msg").innerText = "تم التحميل ✅";
}, 2000);
</script>
JavaScript✅ 3. تأخير تنفيذ دالة:
function greet() {
console.log("مرحبًا بك في موقعنا 🌐");
}
setTimeout(greet, 1000); // تنفذ بعد ثانية
JavaScript✅ 4. تكرار مؤقت (باستخدام setTimeout
بدل setInterval
)
function sayHi() {
console.log("أهلاً!");
setTimeout(sayHi, 1000); // تكرار ذاتي
}
setTimeout(sayHi, 1000);
JavaScript✅ 5. إلغاء المؤقت باستخدام clearTimeout
let timeoutId = setTimeout(() => {
console.log("لن يتم تنفيذ هذا");
}, 5000);
clearTimeout(timeoutId); // إلغاء المؤقت قبل أن ينفذ
JavaScript✅ 6. تنفيذ تسلسل عمليات بتأخير:
setTimeout(() => {
console.log("1️⃣ أول خطوة");
setTimeout(() => {
console.log("2️⃣ ثاني خطوة");
setTimeout(() => {
console.log("3️⃣ ثالث خطوة");
}, 1000);
}, 1000);
}, 1000);
JavaScriptمثال 1: إظهار رسالة ترحيبية بعد 3 ثواني من دخول المستخدم
<body>
<h1>مرحبًا بك في موقعي!</h1>
<p id="welcome"></p>
<script>
setTimeout(() => {
document.getElementById("welcome").innerText = "👋 سعيد بزيارتك!";
}, 3000);
</script>
</body>
JavaScript⏳ مثال 2: إظهار زر بعد تأخير
<button id="delayedBtn" style="display:none;">اضغط هنا</button>
<script>
setTimeout(() => {
document.getElementById("delayedBtn").style.display = "block";
}, 5000);
</script>
JavaScript🛑 مثال 3: إغلاق إشعار بعد فترة
<div id="alert" style="padding: 10px; background: red; color: white;">
⚠️ تنبيه: هذا إشعار مؤقت!
</div>
<script>
setTimeout(() => {
document.getElementById("alert").style.display = "none";
}, 4000);
</script>
JavaScript📦 مثال 4: محاكاة تحميل بيانات (Fake Loading)
<div id="loader">⏳ جاري التحميل...</div>
<div id="data" style="display: none;">📦 هذه هي البيانات المحمّلة!</div>
<script>
setTimeout(() => {
document.getElementById("loader").style.display = "none";
document.getElementById("data").style.display = "block";
}, 3000);
</script>
JavaScript🧠 مثال 5: تمرين بسيط – سؤال وجواب
<h2>ما عاصمة مصر؟</h2>
<p id="answer">جاري التفكير...</p>
<script>
setTimeout(() => {
document.getElementById("answer").innerText = "📍 القاهرة";
}, 2000);
</script>
JavaScript