Mohammed Hhhh نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 انا لدي مشكله في مشروعي قمت بعمل اضافه لل مهام و لكن مهمة الحذف و الـــ النتهاء من المهمه لا تعمل ما السبب و شكرا html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet"> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <title>To Do List</title> </head> <body> <header>To do List</header> <form action=""> <input class="txt" id = "txt" type="text" placeholder="Please Write Here!" id="todo_txt"> <button type="submit" id="submit_todo"><i class="fa-solid fa-square-plus"></i></button> </form> <div class="availabel"></div> <ul class="tasks" id = "ul"> <!-- js --> </ul> <script src="main.js"></script> </body> </html> css * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; transition: all ease; -webkit-transition: all ease; -moz-transition: all ease; -ms-transition: all ease; -o-transition: all ease; } header { width: 100%; height: 5vh; background-color: rgb(39, 39, 39); color: white; padding: 20px; display: flex; align-items: center; } form { margin: 50px; width: 100%; height: 5vh; display: flex; align-items: center; justify-content: center; } .txt { padding: 5px; margin: 10px; width: 500px; } form button { width: 100px; font-size: 20px; } .tasks { min-width: 100%; background-color: rgb(103, 103, 103); padding: 30px; color: white; } .singil_task { min-width: 100%; display: flex; justify-content: space-evenly; align-items: center; margin: 5px; background-color: rgb(23, 23, 23); padding: 30px; border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; -o-border-radius: 10px; } p { max-width: 50%; min-width: 50%; overflow: hidden; } .icons { min-width: 74px; font-size: 24px; } .icons i { transition: all ease 0.5s; -webkit-transition: all ease 0.5s; -moz-transition: all ease 0.5s; -ms-transition: all ease 0.5s; -o-transition: all ease 0.5s; } .fa-circle-xmark:hover { color: red; } .fa-circle-check:hover { color: green; } .availabel { text-align: center; position: absolute; width: 210px; height: 45px; top: 115px; right: 0; } h5 { animation: animationv ease 1.2s; -webkit-animation: animationv ease 1.2s; } .singil_task { animation: animationc ease 0.5s; } @keyframes animationc { 0% { opacity: 0.5; transform: perspective(700px) translate(0px, 80px); transform-origin: center center; } 100% { opacity: 1; transform: perspective(700px); transform-origin: center center; } } @keyframes animationv { 0% { opacity: 0.5; transform: perspective(700px) translate(0px, 80px); transform-origin: center center; } 50% { opacity: 1; transform: perspective(700px); transform-origin: center center; } 100% { opacity: 0; transform: perspective(700px) translate(0px, 80px); transform-origin: center center; } } .done{ opacity: 0.2 ; background-color: green ; color: black ; } JS let task_title = document.getElementById("txt"); let submit_btn = document.getElementById("submit_todo"); let availabel = document.querySelector(".availabel"); // proplem!! let cheak = document.querySelector(".fa-circle-check"); //---- let li = document.createElement("li"); submit_btn.onclick = function (e) { e.preventDefault(); if (task_title.value != "") { let ul = document.getElementById("ul"); li.classList.add("singil_task"); let p = document.createElement("p"); p.textContent = task_title.value; let div_icons = document.createElement("div"); div_icons.classList.add("icons"); div_icons.innerHTML = ` <i class="fa-circle-check fa-sharp fa-solid "></i> <i class="fa-circle-xmark fa-solid" style="padding-left: 15px;"></i> ` li.appendChild(p); li.appendChild(div_icons); ul.appendChild(li); task_title.value = ""; } else { let h5 = document.createElement("h5"); h5.textContent = "please enter a task" h5.style.color = "red"; h5.style.display = "block"; h5.style.padding = "10px"; availabel.appendChild(h5); setTimeout(_ => { h5.remove() }, 1000) } } // proplem // proplem cheak.addEventListener("onclick" , function(){ li.classList.add("done"); }) // proplem // proplem مع الملاحظه بأن المشطله بالأسفل 2 اقتباس
0 Hassan Hedr نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 المشكلة لديك أنك تحاول الاستعلام عن زر انتهاء المهمة عند تحميل الصفحة مباشرة، وذلك غير ممكن لأن المهمة لم تٌضاف بعد، الحل يكون بإنشاء عنصر li داخل حدث الاضافة وليس خارجه، والاستعلام عن زر انهاء المهمة بعد ذلك مباشرة، ثم ربط الحدث click وليس onclick به لتنفيذ عملية الانهاء كالتالي: submit_btn.onclick = function (e) { let li = document.createElement("li"); // انشاء عنصر المهمة ... let cheak = li.querySelector(".fa-circle-check"); // الاستعلام عن الأزرار cheak.addEventListener("click", ..); // ربط حدث ضغط الزر // بنفس الطريقة لزر الحذف // .. } اقتباس
0 Mohammed Hhhh نشر 24 سبتمبر 2022 الكاتب أرسل تقرير نشر 24 سبتمبر 2022 بتاريخ 37 دقائق مضت قال Hassan Hedr: المشكلة لديك أنك تحاول الاستعلام عن زر انتهاء المهمة عند تحميل الصفحة مباشرة، وذلك غير ممكن لأن المهمة لم تٌضاف بعد، الحل يكون بإنشاء عنصر li داخل حدث الاضافة وليس خارجه، والاستعلام عن زر انهاء المهمة بعد ذلك مباشرة، ثم ربط الحدث click وليس onclick به لتنفيذ عملية الانهاء كالتالي: submit_btn.onclick = function (e) { let li = document.createElement("li"); // انشاء عنصر المهمة ... let cheak = li.querySelector(".fa-circle-check"); // الاستعلام عن الأزرار cheak.addEventListener("click", ..); // ربط حدث ضغط الزر // بنفس الطريقة لزر الحذف // .. } لم افهم و انا المشكله عندي كيف احدد العنصر عشان احذفه اقتباس
0 Hassan Hedr نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 بتاريخ منذ ساعة مضت قال Mohammmed Mahmoud: لم افهم و انا المشكله عندي كيف احدد العنصر عشان احذفه كما ذكرت لك بنفس طريقة برمجة وظيفة زر انهاء المهمة، يجب تحديد زر الحذف وإضافة معالج للحدث click له، بداخله يمكنك حذف عنصر li للمهمة كالتالي: submit_btn.onclick = function (e) { let li = document.createElement("li"); // انشاء عنصر المهمة // .. let deleteBtn = li.querySelector(".fa-circle-xmark"); // تحديد زر الحذف deleteBtn.addEventListener("click", function () { li.remove(); // حذف عنصر المهمة }); //.. } اقتباس
0 علي عبد محسن نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 إذا فتحت الكونسول بعد فتح الصفحة ستجد خطأ مفاده أنك تحاول الإنصات addEventListener الى عنصر غير موجود تسميه في الكود الخاص بك بمتغير cheak وهذا لأنك تحاول الوصول الى هذا العنصر مبكراً قبل أن يوجد أصلا لأنك تقوم بإنشاء عناصر li من خلال إضافتها بالإستعانة بجافاسكريت وليس قبل أن يتم تحميل الصفحة. لحل المشكلة قم بإجراء التعديلات التالية على الكود الخاص بك وستعمل لديك خاصية الحذف وأيضا إكمال المهمات. // إحذف هذا الجزء من الكود لأنه لايعمل // cheak.addEventListener("onclick" , function(){ // li.classList.add("done"); // }) ... //بكامل محتوياته كما نقوم بإضافة الصنف الذي يعمل تنسيق معين يظهر لنا العنصر قد تم إنهاءه. إذا لم تنشئ هذا الصنف بعد يمكنك إنشاءه li قم بتعديل هذا الجزء ليصبح الكود فعالاً حيث تلاحظ أننا نحذف العنصر // i هنا نربط الحذف والإكمال بالنقر على العنصر <i onclick="li.classList.add('done');" class="fa-circle-check fa-sharp fa-solid "></i> <i onclick="li.remove()" class="fa-circle-xmark fa-solid" style="padding-left: 15px;"></i> ... اقتباس
0 Mohammed Hhhh نشر 24 سبتمبر 2022 الكاتب أرسل تقرير نشر 24 سبتمبر 2022 بتاريخ 30 دقائق مضت قال علي محسن: إذا فتحت الكونسول بعد فتح الصفحة ستجد خطأ مفاده أنك تحاول الإنصات addEventListener الى عنصر غير موجود تسميه في الكود الخاص بك بمتغير cheak وهذا لأنك تحاول الوصول الى هذا العنصر مبكراً قبل أن يوجد أصلا لأنك تقوم بإنشاء عناصر li من خلال إضافتها بالإستعانة بجافاسكريت وليس قبل أن يتم تحميل الصفحة. لحل المشكلة قم بإجراء التعديلات التالية على الكود الخاص بك وستعمل لديك خاصية الحذف وأيضا إكمال المهمات. // إحذف هذا الجزء من الكود لأنه لايعمل // cheak.addEventListener("onclick" , function(){ // li.classList.add("done"); // }) ... //بكامل محتوياته كما نقوم بإضافة الصنف الذي يعمل تنسيق معين يظهر لنا العنصر قد تم إنهاءه. إذا لم تنشئ هذا الصنف بعد يمكنك إنشاءه li قم بتعديل هذا الجزء ليصبح الكود فعالاً حيث تلاحظ أننا نحذف العنصر // i هنا نربط الحذف والإكمال بالنقر على العنصر <i onclick="this.classList.add('done');" class="fa-circle-check fa-sharp fa-solid "></i> <i onclick="li.remove()" class="fa-circle-xmark fa-solid" style="padding-left: 15px;"></i> ... برجاء ارسال الكود كامل عشان افهم اقتباس
0 علي عبد محسن نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 بتاريخ 14 ساعات قال Mohammmed Mahmoud: برجاء ارسال الكود كامل عشان افهم هذا الكود الخاص بك والتعديلات على جزء صغير منه وهو واضح أليس كذلك؟ تحتاج الى إستبدال السطرين لديك في الكود بالسطرين الذين وضعتهما لك. هذا كل شيء. اقتباس
0 Hassan Hedr نشر 24 سبتمبر 2022 أرسل تقرير نشر 24 سبتمبر 2022 بتاريخ 29 دقائق مضت قال Mohammmed Mahmoud: برجاء ارسال الكود كامل عشان افهم شيفرة جافاسكربت للحل المذكور كاملة: let task_title = document.getElementById("txt"); let submit_btn = document.getElementById("submit_todo"); let availabel = document.querySelector(".availabel"); submit_btn.onclick = function (e) { e.preventDefault(); if (task_title.value != "") { let ul = document.getElementById("ul"); let li = document.createElement("li"); li.classList.add("singil_task"); let p = document.createElement("p"); p.textContent = task_title.value; let div_icons = document.createElement("div"); div_icons.classList.add("icons"); div_icons.innerHTML = ` <i class="fa-circle-check fa-sharp fa-solid "></i> <i class="fa-circle-xmark fa-solid" style="padding-left: 15px;"></i> `; li.appendChild(p); li.appendChild(div_icons); ul.appendChild(li); task_title.value = ""; let cheak = li.querySelector(".fa-circle-check"); cheak.addEventListener("click", function () { li.classList.add("done"); }); let deleteBtn = li.querySelector(".fa-circle-xmark"); deleteBtn.addEventListener("click", function () { li.remove(); }); } else { let h5 = document.createElement("h5"); h5.textContent = "please enter a task"; h5.style.color = "red"; h5.style.display = "block"; h5.style.padding = "10px"; availabel.appendChild(h5); setTimeout((_) => { h5.remove(); }, 1000); } }; اقتباس
السؤال
Mohammed Hhhh
انا لدي مشكله في مشروعي قمت بعمل اضافه لل مهام و لكن مهمة الحذف و الـــ النتهاء من المهمه لا تعمل ما السبب و شكرا
html
css
JS
مع الملاحظه بأن المشطله بالأسفل
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.