آیا تابع getElementByClassName رو قبلاً تعریف کردید؟ چون همچین تابعی فکر نمیکنم اصلاً وجود داشته باشه!
اونی که هست متد getElementsByClassName هست که میتونید روی نودها اجرا کنید. در ضمن این متد هم یک المنت رو برنمیگردونه که بتونید مستقیماً رویداد رو بهش وصل کنید. بلکه یک آرایه برمیگردونه که باید بزارید توی حلقه تا رویدادها رو بهش وصل کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته توی این کد که نوشتم رویداد اتچ نمیشه بلکه به طور کامل ریپلیس میشه.
اتچ کردن رویدادها با جاوا اسکرپت یه مقدار مشکل کراس براوزر ایجاد میکنه بنابراین باید دو سه تا کد بنویسید که همه مرورگرها رو پشتیبانی کنه. اما بیشتر فریمورکها این مشکل رو در نظر گرفتند و کار رو ساده کردند. مثلاً با کتابخانه مورد علاقه من dojo اینجوری میشه .gif)
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من jQuery استفاده نمیکنم سینتکسش دقیق یادم نیست (مطمئن هم نیستم که اتچ میکنه یا ریپلیس) اما فکر میکنم با جی کوئری هم اینطوری بتونید همین کار رو انجام بدید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این قسمت در کد شما اشتباه هست:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به این دلیل که باید هندل تابع رو پاس بدید به رویداد اما در کد شما مقدار بازگشتی از تابع پاس داده میشه. درستش اینه:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتی که به صورت ()bar بنویسید، اسکرپت تابع bar رو اجرا میکنه و نتیجه رو ذخیره میکنه در حالی که باید تابع رو ذخیره کنه و در هنگام فراخوانی رویداد اجرا کنه