سعید که به تازگی Javascript را یاد گرفته، به هیچ وجه قبول نمیکند که با CSS خالی هم میتوان یک Tab ساخت.
یک مینیپروژه آماده کردیم تا با اضافه کردن یک سری استایلها به آن، به سعید ثابت کنیم که با CSS خالی هم میتوان کارهای خفنی کرد.
ظاهر کلی برنامه به این شکل است:
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
در فایل استایل، اولین المانی که باید تغییر دهید، تگ ul
و a
هستند. به صورت پیشفرض، تگهای HTML دارای استایلهای خاصی هستند که در اکثر مواقع نیاز داریم آنها را تغییر دهیم.
در ادامه کلاسهای .navbar
، .navbar--links
را باید طوری تغییر دهید که مقادیری که در drop downهای زیر به شما نشان دادهایم را به خود بگیرند.
استایل:
استایل:
استایل:
استایل:
استایل:
استایل:
style.css
هستید. style.css
باشد.پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
برای اینکه کادر اجرایی بوتکمپ بتوانند راحتتر و سریعتر به دادههای کدآموزهای بوتکمپ دسترسی داشته باشند، نگهداری و بررسی آنها اهمیت زیادی دارد. اما متاسفانه هنگام وارد کردن این اطلاعات به صورت دستی، مشکلی پیش آمد و اسم بعضی از کدآموزها بیشتر از یک بار وارد شد...!
از طرف مدیر بوتکمپ، تسکی به شما داده شده تا با پیادهسازی تابع removeDuplicateStudents
، کدآموزهای تکراری را پیدا کنید و فقط یک نسخه از دادههای مربوط به هر کاربر را حفظ و بقیه را حذف کنید.
برای پیادهسازی تابع removeDuplicateStudents
لازم است به این موارد دقت کنید:
این تابع به عنوان ورودی، یک آرایه دریافت میکند. عناصر این آرایه، آبجکتهایی هستند که هر کدام از آنها مربوط به اطلاعات یک کدآموز است.
هر آبجکت مربوط به اطلاعات یک کدآموز دارای پراپرتیهای زیر است:
از ترکیب مقدار پراپرتیهای grade
، name
، lastNam
، birthDate
میتوان برای مشخص کردن و تفکیک کدآموزها استفاده کرد. به عبارت دیگر نباید هیچ دو کدآموزی با مقادیر برابر این ویژگیها وجود داشته باشند و ترکیب این مقادیر برای هر کدآموز منحصربفرد هستند.
در صورتی که چند نسخه از اطلاعات یک کدآموز موجود بود، نسخهای که مقدار پراپرتی level
در آن بیشتر است، نگهداری میشود و بقیه نسخهها حذف میشوند.
در صورتی که مقدار پراپرتی level
در چند نسخه از اطلاعات یک کدآموز مشترک بود، اولویت با نسخهای که دارای مقدار index کمتری است خواهد بود و بقیه نسخهها حذف میشوند.
همهی عناصر آرایه خروجی باید دارای یک پراپرتی اضافه با کلید id
باشند، مقدار id
از ترکیب مقدار پراپرتیهای grade
، name
، lastNam
، birthDate
به ترتیب از راست به چپ به دست میآید.
در مثال زیر سه نسخه از اطلاعات کاربری به اسم Jone doe
وجود دارد.
از آنجا که تمامی چهار ویژگی grade
، name
، lastNam
، birthDate
در این سه شیء برابر هستند، نتیجه میگیریم اطلاعات این کاربر سه بار و به صورت تکراری ذخیره شده است.
برای تشخیص نسخه معتبر، ابتدا ویژگی level
را بررسی میکنیم و آبجکتی که مقدار level
بیشتری دارد را نگه داشته و بقیه را حذف میکنیم.
در ادامه دو آبجکت که مقدار پراپرتی level
در هردوی آنها برابر ۳ است را بر اساس جایگاهشان در آرایه مقایسه کرده و آبجکتی که index کوچکتری دارد را نگه داشته و بقیه نسخهها را حذف می کنیم.
نباید فراموش کنیم که در آرایه خروجی، تمامی عناصر آرایه دارای پراپرتی id
هستند.
مقدار id
از ترکیب مقادیر پراپرتیهای grade
، name
، lastNam
، birthDate
به ترتیب حاصل میشود.
removeDuplicate
آرایهای از اطلاعات کدآموزها را به عنوان ورودی دریافت میکند.removeDuplicate
آرایهای از اطلاعات کدآموزهاست که نسخههای تکراری اطلاعات در آن حذف شده و هر کدام از عناصر آن دارای پراپرتی id
باشد.index.js
هستید.index.js
باشد.در بعضی از سایتها به دلیل حجم بالای درخواستها، ممکن است بعضی از تلاشهای کاربران برای ورود با خطا مواجه شود و کاربر مجدد درخواست ورود را ارسال کند ،حالا ما میخواهیم به صورت خودکار این کار را انجام دهیم تا اطلاعات بیشتری از ورود کاربران دریافت کنیم. این کار کمک میکند بفهمیم کاربر در چندمین تلاش با موفقیت وارد میشود و چه مقدار زمان طول میکشد تا به نتیجه برسد.
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
اطلاعاتی که در نهایت خواهیم داشت به شکل زیر است:
در این سوال تابع login
به شما داده شده است و تنها نیاز است تا تابع loginAndTry
را پیادهسازی کنید. در ادامه توضیحاتی درباره هر کدام از توابع آورده شده است.
login
تمام درخواستهای ورود کاربر توسط تابعی به نام login
انجام میشود که به عنوان ورودی یک نامکاربری دریافت میکند. این تابع بعد از ارسال درخواست به سرور، یک پاسخ از نوع آبجکت که شامل status
و responseTime
خواهد بود را به ما برمیگرداند که به ترتیب وضعیت درخواست و زمان دریافت پاسخ است. (زمان پاسخ بین ۱ تا ۲۰۰ میلیثانیه خواهد بود.)
نکته: این تابع در حال حاضر در اختیار شما قرار داده شده است و نیازی به پیادهسازی آن نیست.
loginAndTry
حالا باید با استفاده از تابع loginAndTry
درخواستهایی که توسط تابع login
سمت سرور ارسال شدهاند را مدیریت کنید و در نهایت یک آبجکت که شامل مقادیر try
،status
و timeSpent
است را خروجی بدید.
تابع loginAndTry
دو ورودی دریافت خواهد کرد که ورودی اول، نام کاربری شخص و ورودی دوم، تعداد تلاشهای مجاز برای این کاربر خواهد بود. (برای جلوگیری از فشار مضاعف روی سرور، تعداد تلاشهای مجدد کاربر حداکثر ۱۰ خواهد بود.) شما باید تابع را به شکلی کامل کنید تا به تعداد دفعات خواسته شده (ورودی دوم تابع) درخواست ورود به سمت سرور ارسال کند و بلافاصله بعد از اولین درخواست موفق، مقادیر خواسته شده را برگرداند.
تابع loginAndTry
را به شکل زیر فراخوانی میکنیم.
با استفاده از فراخوانی تابع login
داخل تابع loginAndTry
تعدادی درخواست ورود (حداکثر ۵ درخواست) ارسال میکنیم، دو درخواست اول ناموفق است که به ترتیب ۱۱۲ و ۷۲ میلیثانیه زمان برده است. ولی درخواست سوم موفقیتآمیز خواهد بود و زمان پاسخ از سمت سرور ۳۵ میلیثانیه است. پس خروجی نهایی تابع به شکل زیر خواهد بود:
loginAndTry
دو مقدار به عنوان ورودی میگیرد. مقدار اول یک رشته که نام کاربری خواهد بود و مقدار دوم یک عدد که حداکثر تعداد درخواست ورود به سرور است.loginAndTry
باید یک آبکجت باشد با مقادیر try
, status
و timeSpent
که به ترتیب شماره درخواست موفق، وضعیت نهایی و مجموع مدت زمان درخواستها است.login
استفاده کنید. ورودی این تابع یک رشته خواهد بود که نامکاربری است.status
در خروجی نهایی برابر false خواهد بود.main.js
هستید و فایل ارسالی شما هم باید main.js
باشد.ظاهر کلی برنامه به این صورت است:
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
در این سوال میخواهیم وقتی کاربر شماره کارت خود را وارد یا حذف کرد، به طور خودکار به input بعدی یا قبلی برود.
در این برنامه ما شاهد چهار input هستیم که هر کدام از آنها، نماینده چهار رقم از شماره کارت هستند. هر کدام از از آنها با data-order
در HTML مشخص شدهاند.
شما باید با از استفاده از JS*، برنامهای بنویسید که وقتی کاربر چهار رقم را وارد *input کرد، به طور خودکار وارد input بعدی شود یا وقتی رقمها را حذف کرد و input خالی شد، به input قبلی برود.
همچنین اگر کاربر خودش از input اول به input سوم برود، باید چینش و ترتیب حفظ شود و از همان input سوم، تایپ کردن ادامه پیدا کند و به input اول نرود.
max-length
در HTML مشخص شده است. پس نیازی نیست اعتبارسنجی این که کاربر به جای عدد، حروف وارد کند یا این که در هر input، چند رقم وارد کند توسط شما انجام شود. keyboard events
و متود focus
کمک بگیرید.main.js
هستید و فایل ارسالی شما هم باید main.js
باشد.یکی از چالشهایی که کتابخانهها و فریمورکهای جاوااسکریپت سعی در حل آن دارند، مسئله ی Routing است. ما سعی داریم در این سوال، یک برنامه را به همراه Routeهای مرتبط به هر لینک پیادهسازی کنیم.
ظاهر کلی برنامه به این صورت است:
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلهای این پروژه به صورت زیر است:
برای اجرای این پروژه از اکستنشن live server
در vs code
استفاده کنید.
در فایل index.html
چند تگ a
را مشاهده میکنیم که با کلاس navlink
مشخص شدهاند.
یکی از این تگها logo است و سه تای بعدی بوتکمپ ، کالج و جونیورا هستند.
این برنامه باید طوری پیادهسازی شود که با کلیک شدن بر روی این تگها:
/
/bootcamp
/college
/juniora
به Route
هایی که مشاهده کردید هدایت شود.
در هر Route
، محتوای خواسته شده مربوط به همان Route
، باید در یک تگ <h1>
نمایش داده شود.
لینک | Route | محتوا |
---|---|---|
خانه(لوگو) | / | به کوئرا خوش آمدید |
بوت کمپ | bootcamp/ | به بوت کمپ خوش آمدید |
کالج | college/ | به کالج خوش آمدید |
جونیورا | juniora/ | به جونیورا خوش آمدید |
همانطور که گفته شد هر محتوا بر اساس Route
آن در یک تگ <h1>
نمایش داده شود.
a .navlink
نباید صفحه را refresh کنند.main.js
هستید. main.js
باشد.