[英]Function logic not behaving as intended
下午好,
我正在处理一个任务列表,我的removeTask
函数遇到了一些问题。 我试图这样做,如果没有更多的任务要删除,那么不要显示我的taskList
filterDiv
和clearBtn
。 实际发生的是当没有其他东西可以删除时,它仍然显示我的taskList
样式。
我还注意到,即使没有删除任务,单击删除按钮外部也会隐藏我的任务值。 有人能帮助我理解为什么我的逻辑不起作用吗? 任何帮助表示赞赏!
function removeTask(e) {
if (e.target.parentElement.classList.contains('delete-item')) {
if (confirm('Are you sure?')) {
e.target.parentElement.parentElement.remove();
}
} else {
taskList.style.display = 'none';
clearBtn.style.display = 'none';
filterDiv.style.display = 'none';
}
e.preventDefault();
}
我创建了一个小提琴,因为代码片段无法正确加载所有内容。
您目前正在通过删除其他方式进行此操作。 这显然不会起作用,因为一旦你删除它,该功能将不会转到其他地方。 您必须在删除元素后执行此操作:
function removeTask(e) {
if (e.target.parentElement.classList.contains('delete-item')) {
if (confirm('Are you sure?')) {
e.target.parentElement.parentElement.remove();
if(document.querySelectorAll('.collection-item').length === 0){
taskList.style.display = 'none';
clearBtn.style.display = 'none';
filterDiv.style.display = 'none';
}
}
}
e.preventDefault();
}
乍一看 - 看起来你错过了一个检查,如果删除任务后列表是空的:)
function removeTask(e) {
if (e.target.parentElement.classList.contains('delete-item')) {
if (confirm('Are you sure?')) {
e.target.parentElement.parentElement.remove();
if (taskList.length = 0) taskList.style.display = 'none';
}
} else {
taskList.style.display = 'none';
clearBtn.style.display = 'none';
filterDiv.style.display = 'none';
}
e.preventDefault();
}
你可能想要重新检查你在其他方面做的其他动作,他们也属于这里吗?
从任务列表中删除单个任务后,如果没有任何项目,则需要检查条件。 如果没有,则隐藏元素。 我还更新了jsFiddle
function removeTask(e) {
if (e.target.parentElement.classList.contains('delete-item')) {
if (confirm('Are you sure?')) {
e.target.parentElement.parentElement.remove();
if(taskList.children.length <=0) {
taskList.style.display = 'none';
clearBtn.style.display = 'none';
filterDiv.style.display = 'none';
}
}
} else {
taskList.style.display = 'none';
clearBtn.style.display = 'none';
filterDiv.style.display = 'none';
}
e.preventDefault();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.