19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Day 6/Beginner/script.js:
--------------------------------------------------------------------------------
1 | //solution 1 loop
2 | // let index = prompt("Please Enter your index for generate fibonacci series:");
3 |
4 | // const fibonacciLoop = (n) => {
5 | // const series = [0, 1];
6 | // for (let i = 2; i < n; i++) series.push(series[i - 2] + series[i - 1]);
7 | // return series;
8 | // };
9 |
10 | // console.log(fibonacciLoop(index));
11 |
12 | //solution 2 recursive
13 | let index = prompt("Please Enter your index for generate fibonacci series:");
14 |
15 | const fibonacciRecursive = (n) => {
16 | if (n == 1) {
17 | return [0];
18 | } else if (n == 2) {
19 | return [0, 1];
20 | } else {
21 | let series = fibonacciRecursive(n - 1);
22 | series.push(series[series.length - 1] + series[series.length - 2]);
23 | return series;
24 | }
25 | };
26 |
27 | console.log(fibonacciRecursive(index));
28 |
--------------------------------------------------------------------------------
/Day 9/readme.md:
--------------------------------------------------------------------------------
1 | ### 📑 پروژه: جنریت کردن عدد رندوم
2 | #### 📊 سطح: #مبتدی
3 | #### 🌦 روز نهم
4 |
5 | #### 📌 شرح پروژه: یه فانکشن با دو پارامتر min و max بنویسین که یه عدد رندوم بین پارامترها جنریت کرده و return کند.
6 |
7 | ✅ بعنوان مثال:
8 |
9 | rand(5, 12) // 6, 11, 9, 10, ...
10 |
11 | ### 📑 پروژه: پیدا کردن کاراکتر بدون تکرار
12 | #### 📊 سطح: #متوسط
13 | #### 🌦 روز نهم
14 |
15 | #### 📌 شرح پروژه: یه جمله رو از کاربر بگیرین.
16 | اولین حرفی که تو کل جمله تکرار نداشته (فقط یکبار استفاده شده) رو تو خروجی نمایش بدید.
17 |
18 | ✅ بعنوان مثال:
19 |
20 | the quick brown fox jumps then quickly blow air
21 |
22 | تو این جمله اگه کاراکترا رو دونه دونه چک کنین، همشون تو جمله بیش از یکبار تکرار شدن، بجز f.
23 | حرف f اولین کاراکتری هست که تکرار نداره.
24 | پس خروجی میشه f.
25 |
26 | ✅ یه مثال دیگه:
27 | please dont park here
28 |
29 | تو این جمله اولین حرفی که تکرار نشده حرف l هست.
30 |
--------------------------------------------------------------------------------
/Day 5/Beginner/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Mid
10 |
11 |
12 |
13 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Day 6/readme.md:
--------------------------------------------------------------------------------
1 | ### 📑 پروژه: دنباله فیبوناچی
2 | #### 📊 سطح: #مبتدی
3 | #### 🌦 روز ششم
4 |
5 | #### 📌 شرح پروژه: به اعدادی با ترتیب زیر دنباله فیبوناچی گفته میشود:
6 |
7 | 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
8 |
9 | همونطور که میبینین، هر عدد حاصل مجموع دو عدد قبلی هست.
10 | یک فانکشن بنویسید که یه ورودی به عنوان index بگیره و مجموع اولین عدد تا index ورودی از دنباله فیبوناچی را محاسبه کرده و چاپ کند.
11 |
12 | نحوه پیاده سازی: میتونین از Recursive Function یا loop استفاده کنید.
13 |
14 | ### 📑 پروژه: موزیک پلیر
15 | #### 📊 سطح: #متوسط
16 | #### 🌦 روز ششم
17 |
18 | #### 📌شرح پروژه: موزیک پلیر بنویسین که دکمه های play, next, stop و prev داشته باشه و یه Timeline برای نمایش مدت زمان باقی مانده و پخش شده آهنگ.
19 |
20 | ✅ نحوه پیاده سازی: اطلاعات آهنگ ها را داخل آرایهای از آبجکت ها ذخیره کرده و برای دکمه های موزیک پلیر رویداد کلیک تعریف کنید. برای پخش شدن المنت audio میتونین از متد play و برای استپ شدن آن از pause استفاده کنین.
21 | جهت نمایش تایم موزیک میتونین از پروپرتی currentTime و استفاده کنین.
22 |
23 | 🔸 برای چالشیتر شدن پروژه میتونین قابلیت Like، ساخت Playlist، ساخت Favorites، قابلیت آپلود موزیک و ... هم هندل کرده و اطلاعات لازم رو تو Localstorage یا IndexedDB ذخیره کنین ✌❤
24 |
25 | ### 📑 پروژه: توسعه داشبورد ادمین
26 | #### 📊 سطح: #پیشرفته
27 | #### 🌦 روز ششم
28 |
29 | #### 📌 شرح پروژه: این سورسکد استاتیک Html Css خدمت شما.
30 | بعنوان توسعه دهنده جاوااسکریپت براش لاجیک بنویسین.
31 | بطوری ته به شکل Realtime بشه عملیات CRUD رو روی اطلاعات Cms انجام داد.
32 |
33 | برای این که پروژه واقعیتر باشه نیازه یه Structure برای دیتاهای پروژه در نظر بگیرین و تو فایل Json یا localStorage سیو کنین، مثلا:
34 |
35 | {
36 | users: [{}, {}, {}],
37 | products: [{}, {}, {}],
38 | articles: [{}, {}, {}],
39 | }
40 |
41 | 📌 نکته: فقط در حالتی میتونین این پروژه رو هندل کنین که دوره جاوا اسکریپت رو تا سطح پیشرفته بلد باشین!
42 |
43 | همین الان شروع کنید و بنویسید💪
44 |
--------------------------------------------------------------------------------
/Day 3/Beginner/script.js:
--------------------------------------------------------------------------------
1 | const $ = document;
2 | let captchaShow = $.getElementById("captcha__text"),
3 | genBtn = $.getElementById("generate__captcha"),
4 | input = $.getElementById("input"),
5 | alert = $.getElementById("alert"),
6 | submitBtn = $.getElementById("submit_btn");
7 |
8 | let fonts = [
9 | "Architects Daughter",
10 | "Creepster",
11 | "Permanent Marker",
12 | "Press Start 2P",
13 | "Rubik Iso",
14 | ];
15 |
16 | let captcha = "",
17 | fontRange = { min: 29, max: 40 },
18 | letterRange1 = { min: 48, max: 57 },
19 | letterRange2 = { min: 65, max: 90 },
20 | captchaFalse = "Captcha is not correct",
21 | captchaTrue = "Captcha is correct";
22 |
23 | const randomNumber = (min, max) =>
24 | Math.floor(Math.random() * (max - min) + min);
25 |
26 | const createLetter = () =>
27 | randomNumber(0, 10) % 2 === 0
28 | ? randomNumber(letterRange1.min, letterRange1.max)
29 | : randomNumber(letterRange2.min, letterRange2.max);
30 |
31 | const createCaptcha = () => {
32 | let i;
33 | for (i = 0; i < 5; i++) {
34 | let letter = String.fromCharCode(createLetter());
35 | captcha += letter;
36 | let temp = `${letter}`;
42 | captchaShow.innerHTML += temp;
43 | }
44 | };
45 |
46 | genBtn.addEventListener("click", () => {
47 | captcha = "";
48 | captchaShow.innerHTML = "";
49 | input.value = "";
50 | createCaptcha();
51 | });
52 |
53 | submitBtn.addEventListener("click", () => {
54 | if (input.value.toUpperCase() === captcha && input.value !== "") {
55 | alert.innerHTML = captchaTrue;
56 | } else {
57 | alert.innerHTML = captchaFalse;
58 | }
59 | });
60 |
61 | createCaptcha();
62 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # SabzLearn-JavaScript-Problems
4 | Sabzleran questions and answers along with explanations and source codes are placed in this repository.
5 |
6 | ### Problems
7 | - **Day 1**
8 | - Sum of digits `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/qBMJpdW)
9 | - Random Quote `Mid`: [see preview](https://codepen.io/ehsanshahbazii/pen/BaOqJod)
10 | - Trello `Advance`: [see preview](https://codepen.io/ehsanshahbazii/pen/BaOqJzw)
11 | - **Day 2**
12 | - Number of digits `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/VwGEorj)
13 | - Guess the word `Mid`: [see preveiw](https://codepen.io/ehsanshahbazii/pen/JjamgMo)
14 | - Shopping Card `Advance`: not complete yet
15 | - **Day 3**
16 | - Generate captcha `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/dyqQLWy)
17 | - Mouse animation `Mid`: [see preveiw](https://codepen.io/ehsanshahbazii/pen/gOdQyxL)
18 | - Phone book `Advance`: [see preview](https://codepen.io/ehsanshahbazii/pen/vYzQMeL)
19 | - **Day 4**
20 | - Power in math `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/ExeGdRP)
21 | - Dynamic background `Mid`: [see preveiw](https://codepen.io/ehsanshahbazii/pen/PodXyae)
22 | - Sorting algorithms `Advance`: [see preview](https://codepen.io/ehsanshahbazii/pen/eYLbPjm)
23 | - **Day 5**
24 | - Image slider `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/bGMKEGx)
25 | - Tracker game `Mid`: [see preveiw](https://codepen.io/ehsanshahbazii/pen/bGxzomx)
26 | - Typing speed `Advance`: not complete yet
27 | - **Day 6**
28 | - Fibonacci series `Beginner`: [see preview](https://codepen.io/ehsanshahbazii/pen/NWLoaEO)
29 | - Music player `Mid`: not complete yet
30 | - Admin dashboard CRUD `Advance`: not complete yet
31 | - **Day 9**
32 | - Random number `Beginner`: [see preview]()
33 | - char with count one `Mid`: [see preview]()
34 |
35 | ### Days 10, 11, 12, 13 are available in Zip file
36 |
--------------------------------------------------------------------------------
/Day 5/readme.md:
--------------------------------------------------------------------------------
1 | ### 📑 پروژه: اسلایدر ساده
2 | #### 📊 سطح: #مبتدی
3 | #### 🌦 روز پنجم
4 |
5 | #### ✅نحوه پیاده سازی: بر عهده خودتون (دکمه های next, prev و dots هم هندل کنید)
6 |
7 | ### 📑 پروژه: بازی ردیاب
8 | #### 📊 سطح: #متوسط
9 | #### 🌦 روز پنجم
10 |
11 | #### 📌 شرح پروژه: 2 تا آیتم (دایره یا مربع) در صفحه وجود دارد که یکی توسط کاربر کنترل میشود (با کلید های Arrow) و دیگری توسط سیستم جابجا میشود.
12 | کاربر باید با دایره خودش دایره سیستم رو بگیره و هر موقع این دو المنت به همدیگه خوردن، کاربر برنده میشه و بازی تموم میشه.
13 | یکم بازیو چالشیتر بکنیم 😋
14 | یه تایمر هم برای بازی بذارین که اگه تایمر تموم شد و کاربر نتونست سیستم رو بگیره Game Over بشه (بعد از GameOver شدن دیگه کاربر اجازه تکون دادن آیتمش رو نداره)
15 |
16 | ✅ نحوه پیاده سازی: بر عهده خودتون
17 |
18 | ### 📑 پروژه: Typing Speed
19 | #### 📊 سطح: #پیشرفته
20 | #### 🌦 روز پنجم
21 |
22 | #### 📌 شرح پروژه: چندین کلمه (مثلا 10 کلمه) داخل آرایه ای دارین،
23 | یکی از اونا رو به رندوم تو صفحه نمایش میدین،
24 | یک اینپوت هم دارین که کاربر باید اون کلمه نمایش داده شده رو تایپ بکنه،
25 | اما مدت زمان کاربر برای عمل تایپ محدوده(مثلا 4 ثانیه) که برای این موضوع باید تایمر بذارین.
26 | اگه کاربر تو این مدت زمان مشخص شده بتونه کلمه رو تایپ کنه میره مرحله بعد واسه تایپ کلمه بعدی، اما اگه نتونه کلمه رو تایپ
27 | کنه GameOver میشه.
28 | یکم چالشیترش کنیم 😋
29 | میتونین واسه کاربر score هم در نظر بگیرین.
30 | وقتی که کاربر کلمه اول رو قبل از تموم شدن تایمر تایپ کرد، یه واحد به امتیازش اضافه کنین و تایمر رو ریستارت کنین و کلمه بعدی رو نمایش بدین و این روند رو تا GameOver شدن کاربر ادامه بدین.
31 |
32 | برای این که پروژه رو یکم پیچیده کنین و چالشیتر هم بشه، میتونین تایمر هر کلمه رو برابر با نصف تعداد کاراکتر های اون کلمه قرار بدین.
33 | چون منطقی نیست که تایم تایپ دو کلمه 3 حرفی و 10 حرفی یکسان در نظر گرفته شه.
34 | مثلا برای کلمه 5 حرفی، تایمرتون 2.5 ثانیه باشه.
35 |
36 | اگه خیلی سرسخت هستین و میخواین پیچیدهتر از این هم بشه، رفته رفته تایمر رو بیارین پایین. مثلا تا 10 امتیاز اول، تایمر شما برای هر کلمه به نصف تعداد حروف اون کلمه ثانیه باشه و وقتی امتیاز به 10 رسید، بعدش تایمر رو نصف کنین. مثلا برای کلمه 6 حرفی 2 ثانیه زمان بدین.
37 |
38 |
--------------------------------------------------------------------------------
/Day 1/Advance/script.js:
--------------------------------------------------------------------------------
1 | const $ = document;
2 | let tableEmployee = $.getElementById("tableEmployee"),
3 | tableRole = $.getElementById("tableRole"),
4 | employeeInput = $.getElementById("employee"),
5 | taskInput = $.getElementById("task"),
6 | addTask = $.getElementById("addTask");
7 |
8 | let empName = $.getElementById("employees"),
9 | rolesField = $.getElementById("role"),
10 | addEmp = $.getElementById("addEmp");
11 |
12 | let taskWho = $.getElementById("taskWho"),
13 | showTaskWho = $.getElementById("showTaskWho"),
14 | showt = $.getElementById("showt"),
15 | showTaskBtn = $.getElementById("showTaskBtn");
16 |
17 | let task, name, role;
18 | let empData = [{}];
19 |
20 | addTask.addEventListener("click", () => {
21 | name = employeeInput.value;
22 | task = taskInput.value;
23 |
24 | if (name && task) {
25 | let i = empData.findIndex((emp) => emp.name === name);
26 | if (i > 0) {
27 | empData[i].task = task;
28 | } else {
29 | alert("employee not found. try again.");
30 | }
31 | employeeInput.value = "";
32 | taskInput.value = "";
33 | alert(`employee name: ${name} with task: ${task} added.`);
34 | } else {
35 | alert("please fill the inputs");
36 | }
37 | });
38 |
39 | addEmp.addEventListener("click", () => {
40 | name = empName.value;
41 | role = rolesField.value;
42 |
43 | if (name && role) {
44 | tableEmployee.innerHTML += `
${name}
`;
45 | tableRole.innerHTML += `
${role}
`;
46 | empData.push({ name, role, task: "" });
47 | empName.value = "";
48 | rolesField.value = "";
49 | alert(`new employee name: ${name} with role: ${role} is added!`);
50 | } else {
51 | alert("please fill the inputs");
52 | }
53 | });
54 |
55 | showTaskBtn.addEventListener("click", () => {
56 | name = showt.value;
57 | let i = empData.findIndex((em) => em.name === name);
58 | if (i > 0) {
59 | let user = empData[i];
60 | taskWho.innerText = user.name;
61 | showTaskWho.innerText = user.task;
62 | showt.value = "";
63 | } else {
64 | alert("please add correct employee name.");
65 | }
66 | });
67 |
--------------------------------------------------------------------------------
/Day 5/Beginner/script.js:
--------------------------------------------------------------------------------
1 | const $ = document;
2 | let img = $.querySelector("img");
3 | let title = $.querySelector("h4");
4 | let span = $.querySelector("span");
5 | let text = $.querySelector("p");
6 | let pre = $.getElementsByClassName("pre")[0];
7 | let next = $.getElementsByClassName("next")[0];
8 |
9 | const data = [
10 | {
11 | id: 1,
12 | img: "https://randomuser.me/api/portraits/women/72.jpg",
13 | title: "lorem epson",
14 | span: "Web developer",
15 | text: "Lorem ipsum dolor sit amet consectetur, adipisicing elit. ipsum dolor sit amet consecteturipsum dolor sit amet consectetur ",
16 | },
17 | {
18 | id: 2,
19 | img: "https://randomuser.me/api/portraits/women/79.jpg",
20 | title: "many pixels",
21 | span: "Back-End developer",
22 | text: "Lorem ipsum ipsum dolor sit amet consectetur adipisicing elit. ipsum dolor sit amet consectetur",
23 | },
24 | {
25 | id: 3,
26 | img: "https://randomuser.me/api/portraits/men/0.jpg",
27 | title: "scarllet jon",
28 | span: "Front-End developer",
29 | text: "Lorem ipsum dolor sitipsum dolor sit amet consecteturcteturipsum dolor sit amet consectetur, adipisicing elit.",
30 | },
31 | {
32 | id: 4,
33 | img: "https://randomuser.me/api/portraits/men/84.jpg",
34 | title: "Thomas shelby",
35 | span: "Web developer",
36 | text: "Loipsum dolor sit amet conser sit amet consecteturipsum dolor sit amet consecteturipsum dolor sit amet consecteturtetur ",
37 | },
38 | ];
39 |
40 | let current = 1;
41 |
42 | window.onload = () => {
43 | setData(data);
44 | };
45 |
46 | pre.addEventListener("click", () => {
47 | if (current != 1) {
48 | current--;
49 | } else {
50 | current = 4;
51 | }
52 |
53 | setData(data);
54 | });
55 |
56 | next.addEventListener("click", () => {
57 | if (current != 4) {
58 | current++;
59 | } else {
60 | current = 1;
61 | }
62 |
63 | setData(data);
64 | });
65 |
66 | const setData = (arr) => {
67 | img.src = arr[current - 1].img;
68 | title.innerText = arr[current - 1].title;
69 | span.innerText = arr[current - 1].span;
70 | text.innerText = arr[current - 1].text;
71 | };
72 |
--------------------------------------------------------------------------------
/Day 2/readme.md:
--------------------------------------------------------------------------------
1 | ### 📑 پروژه: تعداد ارقام عدد ورودی
2 | #### 📊 سطح: #مبتدی
3 | #### 🌦 روز دوم
4 |
5 | #### 📌 شرح پروژه: عددی از کاربر دریافت کنین و تعداد ارقام آن عدد را نمایش بدین.
6 | تا زمانی که عدد وارد نشده، بطور مداوم prompt نمایش داده شود:
7 | ورودی: 957 / خروجی: 3
8 |
9 | ✅ نحوه پیاده سازی: طبق این پروژه در صورت number بودن ورودی، آن را بصورت مداوم تقسیم بر 10 میکنید.
10 | یک Counter(شمارنده) تعریف کنین و در هر بار تقسیم، مقدار counter را ++ کنید و در نهایت counter تعداد تقسیم های شما خواهد بود.
11 | اگر ورودی عدد نبود، از
12 | حلقه while(true) استفاده کنید و prompt را مادامی که عدد وارد نشده، نمایش بدید.
13 |
14 | ### 📑 پروژه: بازی حدس کلمه
15 | #### 📊 سطح: #متوسط
16 | #### 🌦 روز دوم
17 |
18 | #### 📌 شرح پروژه: یک باکس، اینپوت و دکمه داشته باشید و کلمه مثلا 3 الی 5 حرفی بطور رندوم تولید و تو باکس نمایش بدین.
19 | حالا کاربر باید کلمه رندوم رو حدس بزنه.
20 | کلمه حدسیشو تو اینپوت مینویسه و رو دکمه کلیک میکنه، اگه چیزی که حدس زده بود درست باشه، به alert سبز رنگ و در صورت غلط بودن آلرت قرمز نمایش میدین.
21 | برای جذاب تر بودن بازی کلمه 3 الی 5 حرفی تولید شده را بطور ناقص داخل باکس نمایش بدین.
22 | مثلا اگر کلمه ریکت تولید شده، داخل باکس بعنوان راهنمایی ری*ت بنویسین ✌❤
23 |
24 | ✅ نحوه پیاده سازی: کلمه رندوم تولید شده را در یک متغیر ذخیره کنید و با مقدار valueی اینپوت مقایسه کنید و درست یا غلط بودنش را تشخیص دهید.
25 | نحوه نمایش کلمه بصورت ناقص بر عهده خودتون.
26 |
27 | پروژه: سبد خرید
28 |
29 | ### 📑 پروژه: سبد خرید
30 | #### 📊 سطح: #پیشرفته
31 | #### 🌦 روز دوم
32 |
33 | #### 📌 شرح پروژه: یک سایت تک صفحه ای داشته باشید که در یک قسمت محصولات را لیست کرده باشید و در قسمت دیگر سبد خرید وجود داشته باشد. هر محصول یک دکمه Add داشته باشد که در صورت کلیک روی دکمه هر محصول، آن محصول به سبد خرید اضافه شود.
34 | اگر محصولی از قبل به سبد خرید اضافه شده بود، محصول جدیدی اضافه نشود، فقط تعداد آن محصول ++ شود.
35 | ضمنا، قیمت کل سبد خرید حساب شده و نمایش داده شود.
36 |
37 | ✅ نحوه پیاده سازی: روش های مختلفی وجود داره...
38 | میتونین دیتاها رو داخل آبجکت هایی در آرایه ذخیره کنین و آن ها را با ظاهر دلخواه در DOM نمایش بدید و با کلیک روی دکمه Add هر محصول اطلاعاتش رو دریافت کرده و به سبد خرید اضافه کنید.
39 | یک آرایه هم برای سبد خرید داشته باشید و با کلیک روی Add هر محصول، ابتدا تو سبد خرید سرچ کنین، اگه محصول از قبل وجود داشت فقط count اون رو ++ کنین کلی اگه وجود نداشت، یک آیتم جدید به آرایه و DOM اضافه کنین.
40 |
--------------------------------------------------------------------------------
/Day 2/Mid/script.js:
--------------------------------------------------------------------------------
1 | const $ = document;
2 | let input = $.querySelector("input"),
3 | generate4Btn = $.getElementById("generate4_btn"),
4 | generate6Btn = $.getElementById("generate6_btn"),
5 | submitBtn = $.getElementById("submit_btn"),
6 | alert = $.getElementById("alert");
7 |
8 | const words6Letter = [
9 | "Accuse",
10 | "Admire",
11 | "Adored",
12 | "Bridge",
13 | "Bright",
14 | "Broken",
15 | "Budget",
16 | "Client",
17 | "Closed",
18 | "Closer",
19 | "Dollar",
20 | "Domain",
21 | "Double",
22 | "Driven",
23 | "Famous",
24 | "Father",
25 | "Fellow",
26 | "Gainly",
27 | "Gallop",
28 | "Gamble",
29 | ];
30 |
31 | const words4Letter = [
32 | "agar",
33 | "asps",
34 | "ahem",
35 | "able",
36 | "beta",
37 | "bets",
38 | "bevy",
39 | "case",
40 | "cent",
41 | "chop",
42 | "city",
43 | "deal",
44 | "deck",
45 | "deer",
46 | "daub",
47 | "dale",
48 | "evil",
49 | "exam",
50 | "exit",
51 | "garb",
52 | "gild",
53 | "gird",
54 | "girl",
55 | ];
56 |
57 | const randomGenerate = (max) => {
58 | return Math.floor(Math.random() * max);
59 | };
60 |
61 | let currentWord = "",
62 | word = "",
63 | finish = true,
64 | i;
65 |
66 | generate4Btn.addEventListener("click", () => {
67 | if (finish) {
68 | currentWord = "";
69 | word = words4Letter[randomGenerate(words4Letter.length)].toUpperCase();
70 | for (i = 0; i < 4; i++) {
71 | i % 2 == 0 ? (currentWord += word[i]) : (currentWord += "_");
72 | }
73 | input.value = currentWord;
74 | finish = false;
75 | }
76 | });
77 |
78 | generate6Btn.addEventListener("click", () => {
79 | if (finish) {
80 | currentWord = "";
81 | let word = words6Letter[randomGenerate(words6Letter.length)].toUpperCase();
82 | for (i = 0; i < 6; i++) {
83 | i % 2 == 0 ? (currentWord += word[i]) : (currentWord += "_");
84 | }
85 | input.value = currentWord;
86 | finish = false;
87 | }
88 | });
89 |
90 | submitBtn.addEventListener("click", () => {
91 | let userGuess = input.value.toUpperCase();
92 | userGuess === word && word !== "" ? alert.classList.add("alert_true") : null;
93 | userGuess === word && word !== "" ? (finish = true) : (finish = false);
94 | });
95 |
--------------------------------------------------------------------------------
/Day 3/readme.md:
--------------------------------------------------------------------------------
1 | ###📑 پروژه: تولید کد کپچای 5 کاراکتری
2 | #### 📊 سطح: #مبتدی
3 | #### 🌦 روز سوم
4 |
5 | #### 📌 شرح پروژه: برنامه ای بنویسید که بصورت رندوم کد کپچای 5 کاراکتری تولید کند و آن را در console لاگ گرفته یا بصورت alert نمایش دهد.
6 | کد کپچا باید از اعداد و حروف تشکیل شده باشد.
7 |
8 | ✅ نحوه پیاده سازی: تمام کاراکتر هایی را که از بین آن ها کد کپچا درست کنید، داخل یک متغیر داشته باشید:
9 |
10 | let allChars = "abcdef112344"
11 |
12 | اگه میخواین کد کپچای شما 5 کاراکتر داشته باشد یک حلقه با طول 5 ایجاد کنید و در هر اجرای حلقه یک ایندکس رندوم بین 0 تا allChars.length ایجاد کنید (استرینگها نوعی آرایه هستند و میتونید به کمک ایندکس (از صفر تا length آنها) به کاراکتر هاشون دسترسی داشته باشید).
13 | به کمک عدد رندوم تولید شده، کاراکتری رو از allChars بردارید و به متغیر کد کپچای خودتون concat کنید:
14 |
15 | captcaCode += allChars[i]
16 |
17 | از کاربر بخواهید تا کپچا را وارد کند و سپس کپچای وارد شده توسط کاربر رو با کپچای اصلی مقایسه کنید.
18 | طبق نتیجه مقایسه یک متن متناسب رو نمایش دهید.
19 |
20 | ### 📑 پروژه: پروژه موس دنباله دار
21 | #### 📊 سطح: #متوسط
22 | #### 🌦 روز سوم
23 |
24 | #### 📌 شرح پروژه: یک صفحه وب خالی پیاده سازی کنید که یک دنباله (حلقه یا ستاره یا ....) به دنبال موس کاربر افتاده باشد 😄
25 |
26 | ✅ نحوه پیاده سازی: برای رویداد onMouseMove صفحه یک فانکشن تعریف کنید که event رو به عنوان parameter دریافت کنه و با createElement المنت های دلخواهی ساخته و به پشت موس کاربر append کنین.
27 | حالا از کجا باید بدونیم موس کجاست؟
28 | مختصات و موقعیت موس رو میتونین از آبجکت event دریافت کنین.
29 |
30 | برای رعایت پرفورمنس پروژه آیتم های اضافه شده به دنبال موس رو از Dom ریمو کنید.
31 |
32 | ### 📑 پروژه: دفترچه شماره تلفن
33 | ####📊 سطح: #پیشرفته
34 | #### 🌦 روز سوم
35 |
36 | #####📌 شرح پروژه: یک باکس بعنوان لیست، دو تا اینپوت (نام و شماره تلفن) و یک دکمه تحت عنوان Add داشته باشید. پروژه شما این قابلیت رو داره که اسم و شماره تلفن شخص رو از اینپوت های لازم دریافت کنه و داخل باکس به صورت لیست نمایش بده(مثل دفترچه شماره تلفن)
37 | اگر صفحه کاربر رفرش شد، اطلاعات همچنان در صفحه موجود بوده و پاک نشده باشند.
38 |
39 | ✅ نحوه پیاده سازی: فانکشنی برای رویداد click دکمه Add پیاده سازی کنید که مقادیر رو از اینپوت دریافت کرده و ولیدیشن های لازم رو روی آن ها پیاده سازی کند و با روش دلخواه آن ها را به باکس شماره تلفن ها اضافه کند.
40 | فانکشن هایی برای ذخیره و دریافت اطلاعات از localStorage پیاده سازی کنید و در جاهای لازم پروژه ازشون استفاده کنید.
41 |
--------------------------------------------------------------------------------
/Day 2/Mid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
16 |
23 |
24 |
25 | Mid
26 |
27 |
28 |
15 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
16 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
17 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
18 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
19 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
20 | inventore exercitationem, veniam itaque vero voluptates debitis
21 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
22 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
23 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
24 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
25 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
26 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
27 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
28 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
29 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
30 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
31 |
32 |
33 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
34 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
35 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
36 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
37 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
38 | inventore exercitationem, veniam itaque vero voluptates debitis
39 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
40 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
41 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
42 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
43 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
44 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
45 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
46 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
47 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
48 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
49 |
50 |
51 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
52 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
53 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
54 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
55 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
56 | inventore exercitationem, veniam itaque vero voluptates debitis
57 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
58 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
59 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
60 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
61 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
62 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
63 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
64 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
65 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
66 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
67 |
68 |
69 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
70 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
71 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
72 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
73 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
74 | inventore exercitationem, veniam itaque vero voluptates debitis
75 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
76 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
77 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
78 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
79 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
80 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
81 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
82 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
83 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
84 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
85 |
86 |
87 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
88 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
89 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
90 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
91 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
92 | inventore exercitationem, veniam itaque vero voluptates debitis
93 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
94 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
95 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
96 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
97 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
98 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
99 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
100 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
101 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
102 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
103 |
104 |
105 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
106 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
107 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
108 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
109 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
110 | inventore exercitationem, veniam itaque vero voluptates debitis
111 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
112 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
113 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
114 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
115 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
116 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
117 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
118 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
119 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
120 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
121 |
122 |
123 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
124 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
125 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
126 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
127 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
128 | inventore exercitationem, veniam itaque vero voluptates debitis
129 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
130 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
131 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
132 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
133 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
134 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
135 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
136 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
137 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
138 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
139 |
140 |
141 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
142 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
143 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
144 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
145 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
146 | inventore exercitationem, veniam itaque vero voluptates debitis
147 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
148 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
149 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
150 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
151 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
152 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
153 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
154 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
155 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
156 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
157 |
158 |
159 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
160 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
161 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
162 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
163 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
164 | inventore exercitationem, veniam itaque vero voluptates debitis
165 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
166 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
167 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
168 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
169 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
170 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
171 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
172 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
173 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
174 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
175 |
176 |
177 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
178 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
179 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
180 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
181 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
182 | inventore exercitationem, veniam itaque vero voluptates debitis
183 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
184 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
185 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
186 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
187 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
188 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
189 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
190 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
191 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
192 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
193 |
194 |
195 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quo atque
196 | recusandae aliquid velit pariatur vero fugit tenetur, eligendi aspernatur
197 | rem dignissimos veritatis ab nesciunt eius labore sint fuga nulla ex?
198 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Dicta amet
199 | necessitatibus laboriosam quia voluptate incidunt similique vel impedit,
200 | inventore exercitationem, veniam itaque vero voluptates debitis
201 | dignissimos! Quos possimus minus nam. Lorem, ipsum dolor sit amet
202 | consectetur adipisicing elit. Reiciendis praesentium, accusamus
203 | voluptatibus enim rem ipsam iste, in natus iusto nisi nesciunt facere ex
204 | excepturi eligendi velit repellendus aliquam adipisci expedita? Lorem
205 | ipsum dolor sit amet consectetur adipisicing elit. Similique laudantium
206 | unde ratione nostrum optio. Vel commodi libero at fugit dolore asperiores
207 | labore soluta blanditiis, provident quidem expedita eveniet in unde. Lorem
208 | ipsum dolor sit amet consectetur adipisicing elit. Velit reprehenderit
209 | voluptate eos molestias, alias natus, similique quisquam laudantium ut a
210 | nesciunt sequi? Quam quasi labore recusandae odio magni facilis animi.
211 |