سلام رفقا من یک فانکشن در جاوااسکریپت نوشتم و اونو با onclick به تگ button وصل کردم زمانی که دکمه رو میزنم هر بار فانکشن من اجرا میشه راهی داره بدون اینکه صفحه رفرش بشه هربار دکمه رو میزنم فقط یکبار فانکشن اجرا بشه ؟ ممنون
خیلی گنگ توضیح دادی ولی چیزی که متوجه شده رو کدش برات میزارم امیدوارم بدردت بخوره
let isClicked = false;
function myFunction(event) {
event.preventDefault();
if (!isClicked) {
// do something here
isClicked = true;
}
}
document.querySelector('button').addEventListener('click', myFunction);```
سلام دوست عزیز شما باید بیشتر راجب کدت توضیح بدی و بخشی از اون رو در اختیار دوستان قرار بدی
اما اگر میخوایی فانکشنت فقط یکبار اجرا بشه و هرچقدر هم روی اون دکمه کلیک شد دیگ کار نکنه اون تابع
چند راه داری
1 ) این که به دکمه یک attr اضاف کنی مثلا used یا status و در صورت کلیک تغییرش بدی و برای اجرای فانکشن اول اون attr رو چک کنی
2) میتونی یک متغییر سراسری خارج از فانکشن تعریف کنی مثلا is_button_clicked با مقدار اولیه false و بعد از اولین اجرا مقدارش رو تغییر بدی
3) میتونی خود تابع رو در یک متغییر ریخته باشی چیزی که توی es6 داریم و بعد اجرای اول اون رو یک void ساده کنی و ریست کنی که کاری نکنه دیگه که پیشنهاد نمیکنم این روش رو
اگر مشکلات دیگری با اجرای چند باره ی تابع بر اساس زمان اجرای تابع داری باید دکمه رو برای مدت اجرا disabled کنی تا کار تابع تموم شه و یک spiner توی دکمه ی خودت بزاری که نماینده ی لودینگ هست
اگر بد متوجه موضوع شدم لطفا بیشتر توضیح بده که چی میخوایی و کدت رو هم قرار بده
خیلی گنگ توضیح دادی ولی چیزی که متوجه شده رو کدش برات میزارم امیدوارم بدردت بخوره
let isClicked = false;
function myFunction(event) {
event.preventDefault();
if (!isClicked) {
// do something here
isClicked = true;
}
}
document.querySelector('button').addEventListener('click', myFunction);```
راهی داره بدون اینکه صفحه رفرش بشه هربار دکمه رو میزنم فقط یکبار فانکشن اجرا بشه ؟
بله چرا نشه
ابتدا شما باید type باتن رو روی button بزاری سپس هربار روی دکمه کلیک میکنی بدون رفرش شدن صفحه تابع اجرا میشه
از این سینتکس استفاده کن . once کاری میکنه که ایونت کلیکت فقط یه بار اجرا بشه
element.addEventListener(event, func, { once: true });
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟