![](/img/trans.png)
[英]Trying to put array as an key-value pair in objects. Not getting desired output?
[英]Trying to filter an array but not getting desired output
我有一个filtertask输入,因此,每当用户键入内容时,它都应仅显示与键入的任务匹配的任务
筛选工作正常,但是在删除键入的文本之后,任务列表不再出现
这里list-item是li元素的类
如果任务列表中有“ singh”和“ sharma”,而我键入“ m”进行过滤,则会显示“ sharma”。 但是当我清除filtertask输入时,仅显示“ sharma”而不是“ singh”和“ sharma”
filter.addEventListener('keyup', filTask); function filTask(e) { const text = e.target.value.toLowerCase(); if (text !== '') { document.querySelectorAll('.list-item').forEach(function(task) { const item = task.firstChild.textContent; if (item.toLowerCase().indexOf(text) != -1) { task.style.display = 'block'; } else { task.style.display = 'none'; } }); } }
你只需要在这里else
,
if (text !== '') {
document.querySelectorAll('.list-item').forEach(function(task) {
const item = task.firstChild.textContent;
if (item.toLowerCase().indexOf(text) != -1) {
task.style.display = 'block';
} else {
task.style.display = 'none';
}
});
} else {
document.querySelectorAll('.list-item').forEach(function(task) {
task.style.display = 'block';
});
}
您错过了else条件。 当文本为空时,您需要将display:block
设置为所有元素。
var filter = document.getElementById('search'); filter.addEventListener('keyup', filTask); function filTask(e) { const text = e.target.value.toLowerCase(); if (text !== '') { document.querySelectorAll('.list-item').forEach(function(task) { const item = task.firstChild.textContent; if (item.toLowerCase().indexOf(text) != -1) { task.style.display = 'list-item'; } else { task.style.display = 'none'; } }); } else { document.querySelectorAll('.list-item').forEach(function(task) { task.style.display = 'list-item'; }); } }
<input type="text" id="search"/> <ul> <li class="list-item">sharma</li> <li class="list-item">singh</li> </ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.