Я создал список задач и кнопку, которая удаляет отмеченные задачи из ул., но удаляет все ли из ул.
<div class = "container mt-5">
<ul class = "list-group" id = "tasks"> </ul>
<div class = "col">
<button type = "button" class = "btn btn-primary" id = "delchecked">Delete done tasks</button>
</div>
function addTask() {
const li=document.createElement("li");
li.className = "list-group-item";
tasks.appendChild(li);
const checkBox=document.createElement("input")
checkBox.className = "form-check-input me-1 fa-pull-right"
checkBox.type = "checkbox"
checkBox.name = "chk"
li.appendChild(checkBox);
checkBox.id = "checkBox";
const delchecked=document.querySelector("#delchecked");
delchecked.addEventListener("click",deleteCheckedItem);
}
function deleteCheckedItem(){
var k=document.getElementsByName('chk');
for(var i=0; i<k.length; i++){
if (k[i].checked==true)
tasks.removeChild(li);
}
}
я хочу удалить выбранный li из ul, но приведенный выше код удаляет все «li».
да, я пропустил равное, но все равно удалил все ли :(
Я создал jsfiddle из вашего кода, и он работает правильно (с исправлением == vs =): jsfiddle.net/ew0msfdo. Одна рекомендация: не сравнивайте с логическими значениями. Просто используйте if (k[i].checked). Еще одна рекомендация: всегда используйте фигурные скобки, поэтому if (k[i].checked) { tasks.removeChild(li); }.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


попробуй это:
function deleteCheckedItem() {
var checkboxes = document.getElementsByName('chk');
for (var i = checkboxes.length - 1; i >= 0; i--) {
if (checkboxes[i].checked) {
var listItem = checkboxes[i].parentNode;
listItem.parentNode.removeChild(listItem);
}
}
}
Вы должны сделать логику «создания задачи» функцией для демонстрации нескольких задач. В вашем примере вы создаете только одну задачу.
Теперь, если вы хотите удалить задачу, советую найти ближайший список относительно кнопки т. е. closest.
const DEFAULT_TASKS = ['Take out the trash', 'Wash dishes', 'Clean laundry'];
const tasks = document.querySelector('#tasks');
const delChecked = document.querySelector("#delchecked");
DEFAULT_TASKS.forEach(addTask);
delChecked.addEventListener("click", deleteDoneTasks);
function addTask(task) {
const li = document.createElement('li');
li.className = 'list-group-item';
tasks.appendChild(li);
const checkBox = document.createElement('input');
checkBox.className = 'form-check-input me-2 fa-pull-right';
checkBox.type = 'checkbox';
li.appendChild(checkBox);
const label = document.createElement('span');
label.textContent = task;
li.append(label);
}
function deleteDoneTasks(e) {
const container = e.target.closest('.container');
const list = container.querySelectorAll('.list-group .list-group-item');
for (let item of list) {
if (item.querySelector('.form-check-input').checked) {
item.remove();
}
}
}<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet" integrity = "sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin = "anonymous">
<div class = "container mt-4">
<ul class = "list-group mb-2" id = "tasks"></ul>
<div class = "col">
<button type = "button" class = "btn btn-primary" id = "delchecked">Delete done tasks</button>
</div>
</div>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity = "sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin = "anonymous"></script>
if (k[i].checked=true)должно бытьif (k[i].checked==true); вы назначаете, когда хотите сравнить.