یه همچین چیزی قراره بسازیم که وقتی کار رو از لیست تیک می زنیم به شکل پائین نمایش داده بشه و آیکن حذف هم فعال بشه.
html <div id="conteaner"> <input type="text" id="add-work" placeholder="NAME..."> <button id="btn">+ </button> </div> <div id="listcont"></div>
قسمت css
css #conteaner,#listcont{ display: flex; flex-direction: row; flex-wrap: nowrap; align-content: flex-end; justify-content: center; align-items: baseline; } #listcont{ display: flex; align-content: space-between; justify-content: space-evenly; flex-direction: column; align-items: baseline; } #add-work{ width: 60%; padding: 1rem; } button{ width: 10%; padding: 1rem; font-size: 14px; font-weight: 900; background-color: green; } span{ font-size: 30px;} #listcont p{ width: 100%; background-color: rgb(197 213 202); color: rgb(0, 0, 0); display: flex; align-content: space-around; justify-content: space-between } a{ background-color: #000000; color: aliceblue; font-size: 29px; border-radius: 102%; } span{ margin-right: auto; }
قسمت جاوااسکریپت
js //'گرفتن المنت ها' const getvalue=document.getElementById("add-work") const btn=document.getElementById("btn") const listcont=document.getElementById("listcont") //چون اول باید المنت ساخته بشه و بعد ما بتونیم بگیریمش این یعنی ویژگی تک رشته ای // جاوااسکریپت که به //Asynchronous Javascript //معروفه و برای حل این مشکل می تونیم از //callback //promise //async await //استفاده کنیم function first( callback){ // ساختن المنت ها در جاوااسکریپت و اضافه کردن آن به دام btn.addEventListener("click",e=>{ const deletel=document.createElement("a") deletel.textContent='x' const elementp=document.createElement("p") const inpu=document.createElement("input") const tags=document.createElement("span") inpu.setAttribute("type","checkbox") elementp.append(inpu) elementp.append(tags) tags+=getvalue.value elementp.append( deletel) listcont.append(elementp) getvalue.value="" callback() }) } //تابع دوم که باید بعد تابع اول اجرا بشه و بتونه المنت های رو که میخواهیم رو بگیره function two(){ const taker=document.querySelectorAll('input[type=checkbox]') const span=document.querySelectorAll("span") const alla=document.querySelectorAll("a") // چون آرایه ای از المنت ها رامی گیریم به همین خاطر از فور ایچ //استفاده می کنیم taker.forEach(e=>{ e.addEventListener("change",e=>{ //دسترسی به والد وبرادر و خواهر المنت ها const feed=e.target.nextSibling const parentelem=e.target.parentElement const aelem=e.target.nextSibling.nextSibling if(e.target.checked){ aelem.style.background="#FF0000" aelem.style.borderColor="black" parentelem.style.background="#33333" feed.style.textDecoration="line-through" }else{ parentelem.style.background="" feed.style.color="" feed.style.textDecoration="" aelem.style.background="" console.log(e.target.checked); } }) }) alla.forEach(e=>{ e.addEventListener("click",e=>{ const checkfordelet=e.target.previousSibling.previousSibling if (checkfordelet.checked) { const e_target=e.target.parentElement e_target.remove() }else if(!checkfordelet.checked){ return false } }) }) } //در نهایت فراخوانی تابع اول با کال بک تابع دوم first(two)
کد ها رو می تونید از لینک زیر دانلود کنید