Я создаю простой список дел, используя только javascript. Я знаю, как достичь желаемого результата с помощью jQuery.
Я создал функцию, которая помещает сквозную строку как текстовое оформление в выполненных задачах.
Для этого я пытаясь выбрать динамически добавленные элементы «li» с помощью querySelectorAll. Затем, просматривая выбор, я добавил addEventListener, «щелчок» которого переключает эффект сквозной строчки.
Я вызываю такую функцию каждый раз, когда новый элемент «li» добавляется в список задач. .
Таким образом, l oop запускается, и событие запускается много раз, поскольку количество элементов «li» в списке растет.
Если цикл повторяется нечетное количество раз , цель «достигнута». Но, естественно, запустить четное количество раз это не сработает.
Есть ли способ решить эту ситуацию, используя для l oop? Если нет, то как лучше всего достичь желаемого результата, используя только чистый javascript.
const arrTask = [];
let insertTask = document.querySelector("input");
insertTask.addEventListener("keydown", e => {
if(e.keyCode === 13){
arrTask.push(insertTask.value);
insertTask.value = "";
listTasks()
e.preventDefault();
}
})
const getUlist = document.querySelector("ul");
function listTasks(){
// Add task to the list
let task = document.createElement("li");
task.innerHTML = `${arrTask[arrTask.length-1]}<button class="btn btn-danger deletable"><i class="fa fa-trash"></i></button>`
getUlist.appendChild(task);
task.classList = "list-group-item list-group-item-action taskContainer d-flex justify-content-between align-items-center";
markTasks();
deleteButton();
}
function markTasks(){
// Mark done tasks
let listItem = document.querySelectorAll(".taskContainer");
for(item of listItem){
item.addEventListener("click", function(){
this.classList.toggle("mark")
console.log(this)
})
}
}
Мой код: https://codepen.io/minatogawa/pen/oNbOqXp?editors=0011