راکت
حل شده

عدم تکرار onclick

4 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

4
سید میثاق موسویان
سید میثاق موسویان
@misaghmoosavian

تخصص: توسعه دهنده

بهترین پاسخ

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


let isClicked = false;

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

  if (!isClicked) {
    // do something here

    isClicked = true;
  }
}

document.querySelector('button').addEventListener('click', myFunction);```
محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

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

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

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

vahid
vahid
@vahid1379

تخصص: توسعه دهنده وردپرس

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

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

شاید پاسخ شما همین‌جا باشد

akam-nejati
akam-nejati
@mr.akam.320

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

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

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

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