Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中搜索字符串并将其添加到类中_Javascript - Fatal编程技术网

Javascript 在数组中搜索字符串并将其添加到类中

Javascript 在数组中搜索字符串并将其添加到类中,javascript,Javascript,处理简单的待办事项列表,我一直坚持在列表中搜索任务。用户正在输入字段中键入内容,我想将其与列表中的位置进行比较,如果有合适的地方,请将其设置为类;如果它不再合适,请删除该类。现在,它只是在输入字段为空时删除类,我不知道如何编辑代码,使其按我所希望的方式工作。有什么想法吗 现在,仅当searchValue==时才删除.active。您需要在状态更改时删除.active。您可以迭代这些项,并决定删除或添加每个项的类: const searchInList = (e) => { const

处理简单的待办事项列表,我一直坚持在列表中搜索任务。用户正在输入字段中键入内容,我想将其与列表中的位置进行比较,如果有合适的地方,请将其设置为类;如果它不再合适,请删除该类。现在,它只是在输入字段为空时删除类,我不知道如何编辑代码,使其按我所希望的方式工作。有什么想法吗

现在,仅当searchValue==时才删除.active。您需要在状态更改时删除.active。您可以迭代这些项,并决定删除或添加每个项的类:

const searchInList = (e) => {
  const searchValue = e.target.value.trim().toLowerCase();

  const liList = document.querySelectorAll('ul.taskslist li')
    .forEach(li => { // iterate all items 
      if (searchValue === '' || !li.textContent.toLowerCase().includes(searchValue)) { // if search term is empty or not included in li text
        li.classList.remove('active');
      } else {
        li.classList.add('active');
      }
    });
}

在这段代码中,仅当searchValue为空时才删除该类

if (searchValue === "") liList.forEach(index => index.classList.remove('active'));
    else liList.forEach(index => index.classList.add('active'));
要将此删除行移到函数顶部,只需在搜索框中键入每个字符后删除所有活动类,然后每次将其添加回新匹配项:

const searchInList = (e) => {
   [...document.querySelectorAll('ul.taskslist li')].forEach(li => li.classList.remove('active'));
   .....
   liList.forEach(index => index.classList.add('active'));
}
const inputAdd=document.querySelector'div.add input'; const tasksList=document.querySelector'.tasksList'; const addTask==>{ 如果输入add.value{ const li=document.createElement'li'; constdeletebutton=document.createElement'button'; li.textContent=inputAdd.value; deleteButton.textContent='\xD7'; tasksList.appendChildli.AppendChildDelete按钮; }否则返回; } tasksList.onclick=e=>{ 如果e.target.tagName!==“按钮”返回; 否则e.target.parentNode.remove; } const searchInList=e=>{ […document.queryselectoral'ul.taskslist li'].forEachli=>li.classList.remove'active'; const searchValue=e.target.value.toLowerCase; const liList=[…document.queryselectoral'ul.taskslist li'].filterli=>li.textContent.toLowerCase.includeSearchValue; liList.forEachindex=>index.classList.add'active'; } document.querySelector'div.add button'。addEventListener'click',addTask; document.querySelector'div.search input'。addEventListener'input',searchInList; 李:很活跃{ 颜色:红色; } 要做的事情 添加任务 添加 搜索任务
请添加一些相关的HTMLIt作品:我还添加了if searchValue!==在searchInList函数的最后一个通道之前。当输入字段为空时,它正在清除类。@ErykSłowiński捕捉得很好!
const searchInList = (e) => {
   [...document.querySelectorAll('ul.taskslist li')].forEach(li => li.classList.remove('active'));
   .....
   liList.forEach(index => index.classList.add('active'));
}