نمایش نتایج 1 تا 3 از 3

نام تاپیک: حل مشکل دوبار کلیک کردن برای اجرای کد جاواسکریپت

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    شیراز-اصفهان-یاسوج
    سن
    32
    پست
    78

    Question حل مشکل دوبار کلیک کردن برای اجرای کد جاواسکریپت

    با سلام
    من تابع زیر را نوشتم و اون رو توی رخداد کلیک یک دکمه در یک فایل html قرار دادم


    function openNav() {
    if(document.getElementById("main_menu").style.widt h == "0px"){
    document.getElementById("main_menu").style.width = "250px";
    }else{
    //alert("nok!");
    document.getElementById("main_menu").style.width = "0px";
    }
    }



    حال مشکل اینجاست که وقتی صفحه html رو توی مرورگر باز میکنم، برای بار اول باید دوبار روی دکمه کلیک کنم تا منو را باز کند اما برای دفعات بعدی یک بار کلیک باز میکند و یک بار کلیک می بندد.

    ایراد کارم کجاست و چیکار کنم؟
    آخرین ویرایش به وسیله kooroshheydarirad : شنبه 22 مهر 1396 در 09:53 صبح دلیل: ویرایش فونت

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: حل مشکل دوبار کلیک کردن برای اجرای کد جاواسکریپت

    مشکلی نداره کدت
    https://jsfiddle.net/318os9rq/

    احتمالا تو css و html یه مشکلی داری که بار اول اجرا نمیشه یا اجرا شدنش رو متوجه نمیشی نه اینکه کلیک کار نکنه کافیه یه آلرت بزاری اول تابع تا متوجه بشی با کلیک اول اجرا میشه یا نه

  3. #3

    نقل قول: حل مشکل دوبار کلیک کردن برای اجرای کد جاواسکریپت

    درود ،
    برای اینکار دو تا کار می تونید انجام بدید یکی استفاده از متغییر برای مشخص کردن باز بودن یا نبودن منو و اون کی یهم با widthOffset
    ولی دلیل اینکه نمی تونید از این کدتون استفاده کنید اینه که style.width مقداری رو برمی گردونه که یا به صورت اینلاین مشخص شده یا اینکه با style.width = n + "px"
    به خاطر همین هم بار اول اجرا نمی شه ولی بار دوم درست کار می کنه درواقع همیشه درست کار می کنه ولی بار اول چون به صورت اینلاین یا با style.width براش تعریف نشده style.width مقدار خالی رو برمی گردونه و نه صفر رو به خاطر همین کد های داخل بلاک else اجرا می شه که width رو صفر می کنه و حالا بار دوم که کلیک می کنید چون با style.width بهش مقدار صفر پیکسل رو دادید شرطتتون اونطوری که می خواین اجرا می شه
    حالا دو روشی که گفتم اینطوریه :

    var open = false;
    function openMenu(){
    if(open){
    document.querySelector("#menu").style.width = "0px";
    open = false;
    }
    else{
    document.querySelector("#menu").style.width = "100px";
    open = true;
    }
    }

    روش دوم :

    function openMenu(){
    if(document.querySelector("#menu").offsetWidth == 100){
    document.querySelector("#menu").style.width = "0px";
    }
    else{
    document.querySelector("#menu").style.width = "100px";
    }
    }

    موفق باشید

تاپیک های مشابه

  1. سوال: مشکل با دستور shell برای اجرای یک خط کد در dos
    نوشته شده توسط R2du-soft در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: شنبه 04 آبان 1392, 08:48 صبح
  2. سوال: مشکل دوبار کلیک برای اجرای شدن یک رویداد
    نوشته شده توسط Bahmany در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 06 اسفند 1391, 14:36 عصر
  3. مشکل دوبار کیلک کردن
    نوشته شده توسط ehsanvbnet در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 11 آبان 1388, 17:44 عصر
  4. سوال: مشکل با کلیک کردن در web browser
    نوشته شده توسط saeedvir در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: جمعه 01 آبان 1388, 16:21 عصر
  5. ایجاد تایمر برای اجرای کد
    نوشته شده توسط MOJY.Net در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: پنج شنبه 05 شهریور 1388, 10:14 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •