Web appOpen in Telegram

Post✨ ساخت یک Todo List ساده با JavaScript خالص (بدون Framework)

23 February 2026
|
| کانال توسعه‌دهندگان جاوااسکریپت |
✨ ساخت یک Todo List ساده با JavaScript خالص (بدون Framework) خیلی وقت‌ها برای تمرین JavaScript و DOM، یک پروژه کوچیک و واقعی مثل Todo List بهترین گزینه‌ست. هم رویدادها رو لمس می‌کنی، هم کار با DOM و هم مدیریت state ساده رو. یکی از بهترین رفرنس‌ها برای کار با DOM و رویدادها، مستندات MDN هست: MDN DOM Introduction در این تمرین، با چند مفهوم مهم سر و کار داریم: ✅ گرفتن elementها با querySelector ✅ گوش دادن به eventها مثل submit و click ✅ جلوگیری از refresh فرم با event.preventDefault() ✅ دستکاری DOM با createElement و appendChild مثال زیر یک Todo List خیلی ساده ولی عملی است. کافی‌ست یک فایل index.html بسازی و این کد را داخلش قرار بدهی و در مرورگر باز کنی: <!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Simple Todo</title> <style> body { font-family: sans-serif; max-width: 480px; margin: 40px auto; } form { display: flex; gap: 8px; } ul { padding: 0; list-style: none; } li { display: flex; justify-content: space-between; margin: 4px 0; } button { cursor: pointer; } </style> </head> <body> <h1>Todo List</h1> <form id="todo-form"> <input id="todo-input" placeholder="New task..." required /> <button type="submit">Add</button> </form> <ul id="todo-list"></ul> <script> const form = document.querySelector('#todo-form'); const input = document.querySelector('#todo-input'); const list = document.querySelector('#todo-list'); form.addEventListener('submit', function (event) { event.preventDefault(); const text = input.value.trim(); if (!text) return; const li = document.createElement('li'); const span = document.createElement('span'); span.textContent = text; const removeBtn = document.createElement('button'); removeBtn.textContent = 'x'; removeBtn.addEventListener('click', function () { list.removeChild(li); }); li.appendChild(span); li.appendChild(removeBtn); list.appendChild(li); input.value = ''; input.focus(); }); </script> </body> </html> نکته‌های ریز 👇 • استفاده از trim() جلوی اضافه شدن تسک خالی را می‌گیرد. • با event.preventDefault() فرم صفحه را reload نمی‌کند و کنترل دست ما می‌ماند. • با addEventListener روی خود دکمه حذف کار می‌کنیم تا ساختار کد تمیزتر بماند. این تمرین پایه خوبی برای قدم‌های بعدی مثل ذخیره‌سازی در localStorage، اضافه کردن فیلتر (Completed / Active) یا بعداً پیاده‌سازی همین ایده در React یا Vue است. امتحانش روی یک فایل ساده لوکال حس خوبی از «کار کردن کد» می‌دهد و درک DOM را خیلی محکم‌تر می‌کند. اگر به درد دوستی می‌خورد که تازه JavaScript را شروع کرده، برایش بفرست 💚 🔖 #Javascript #JS #جاوااسکریپت #JavaScript #DOM #Todo #Frontend #ES6 #VanillaJS 👤 Developix 💎 Channel: @DevelopixJavascript
14 · 1.5K ·

Nearby in the feed

|| کانال توسعه‌دهندگان جاوااسکریپت |در کد زیر یک خطای ظریف در استفاده از async/await و Array.prototype.map وجود دارد که باعث می‌شود رفتار برنامه مطابق انتظار نباشد. چه چیزی باید در این کد تغییر کن|| کانال توسعه‌دهندگان جاوااسکریپت |قانون «یک سطح انتزاع در هر تابع» در JavaScript 🧠✨ یکی از نکات طلایی در Clean Code این است که هر تابع فقط با یک سطح انتزاع کار کند. یعنی یا درگیر جزئیات low-leve
this message
|| کانال توسعه‌دهندگان جاوااسکریپت |ویراک کلود | تجربه‌ی ابری بدون محدودیت ☁️🚀 🎁 ۲۰٪ شارژ هدیه روی اولین واریزی مزیت‌هایی که واقعاً فرق می‌سازن: ⚡️ پهنای باند 980 مگ 🌐با IP مازاد ⏱️ راه‌اندازی فور|| کانال توسعه‌دهندگان جاوااسکریپت |🎯 هندل‌کردن کلیک‌ها با Event Delegation وقتی تعداد زیادی دکمه یا آیتم در DOM داریم، اضافه‌کردن یک event listener روی هر عنصر هم کند است، هم کد را شلوغ می‌کند. ب
|| کانال توسعه‌دهندگان جاوااسکریپت || کانال توسعه‌دهندگان جاوااسکریپت |@DevelopixJavascript · channel
3 879subscribers681average post reach
Venue feed Open in Telegram

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · Index limits · Remove a page · Catalog · Search · How we count