امیرحسین سعیدی
1 سال پیش توسط امیرحسین سعیدی مطرح شد
4 پاسخ

عدم تکرار onclick

سلام رفقا من یک فانکشن در جاوااسکریپت نوشتم و اونو با onclick به تگ button وصل کردم زمانی که دکمه رو میزنم هر بار فانکشن من اجرا میشه راهی داره بدون اینکه صفحه رفرش بشه هربار دکمه رو میزنم فقط یکبار فانکشن اجرا بشه ؟ ممنون


ثبت پرسش جدید
سید میثاق موسویان
تخصص : توسعه دهنده
@misaghmoosavian 1 سال پیش مطرح شد
0

خیلی گنگ توضیح دادی ولی چیزی که متوجه شده رو کدش برات میزارم امیدوارم بدردت بخوره


let isClicked = false;

function myFunction(event) {
  event.preventDefault();

  if (!isClicked) {
    // do something here

    isClicked = true;
  }
}

document.querySelector('button').addEventListener('click', myFunction);```

محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام دوست عزیز شما باید بیشتر راجب کدت توضیح بدی و بخشی از اون رو در اختیار دوستان قرار بدی
اما اگر میخوایی فانکشنت فقط یکبار اجرا بشه و هرچقدر هم روی اون دکمه کلیک شد دیگ کار نکنه اون تابع
چند راه داری
1 ) این که به دکمه یک attr اضاف کنی مثلا used یا status و در صورت کلیک تغییرش بدی و برای اجرای فانکشن اول اون attr رو چک کنی
2) میتونی یک متغییر سراسری خارج از فانکشن تعریف کنی مثلا is_button_clicked با مقدار اولیه false و بعد از اولین اجرا مقدارش رو تغییر بدی
3) میتونی خود تابع رو در یک متغییر ریخته باشی چیزی که توی es6 داریم و بعد اجرای اول اون رو یک void ساده کنی و ریست کنی که کاری نکنه دیگه که پیشنهاد نمیکنم این روش رو

اگر مشکلات دیگری با اجرای چند باره ی تابع بر اساس زمان اجرای تابع داری باید دکمه رو برای مدت اجرا disabled کنی تا کار تابع تموم شه و یک spiner توی دکمه ی خودت بزاری که نماینده ی لودینگ هست

اگر بد متوجه موضوع شدم لطفا بیشتر توضیح بده که چی میخوایی و کدت رو هم قرار بده


سید میثاق موسویان
تخصص : توسعه دهنده
@misaghmoosavian 1 سال پیش مطرح شد
0

خیلی گنگ توضیح دادی ولی چیزی که متوجه شده رو کدش برات میزارم امیدوارم بدردت بخوره


let isClicked = false;

function myFunction(event) {
  event.preventDefault();

  if (!isClicked) {
    // do something here

    isClicked = true;
  }
}

document.querySelector('button').addEventListener('click', myFunction);```

oss_vahid
تخصص : wp developer
@ossvahid 1 سال پیش مطرح شد
0

راهی داره بدون اینکه صفحه رفرش بشه هربار دکمه رو میزنم فقط یکبار فانکشن اجرا بشه ؟

بله چرا نشه
ابتدا شما باید type باتن رو روی button بزاری سپس هربار روی دکمه کلیک میکنی بدون رفرش شدن صفحه تابع اجرا میشه


akam-nejati
@mr.akam.320 1 سال پیش مطرح شد
1

از این سینتکس استفاده کن . once کاری میکنه که ایونت کلیکت فقط یه بار اجرا بشه

element.addEventListener(event, func, { once: true });

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام