首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的代码textContent.indexOf不能比较输入值

为什么我的代码textContent.indexOf不能比较输入值
EN

Stack Overflow用户
提问于 2022-07-06 11:04:06
回答 3查看 45关注 0票数 0

这些代码几个月前就起作用了,最近又停止工作了。

当我发短信的时候,它可以自动搜索列表中的条目

我一直在尝试一堂课上的代码,但仍然不起作用

这是我的密码

代码语言:javascript
复制
function search() {
  let search = document.querySelector('#search');
  let li = document.querySelectorAll('li');
  for (let data of li) {
    console.log(data.textContent.indexOf(search))
    if (data.textContent.indexOf(search) > -1) {
      data.style.display = '';
    } else {
      data.style.display = 'none'
    }
  }
}
代码语言:javascript
复制
<input type="text" id="search" onkeyup="search()">
<ul id="phone">
  <li>iPhone 12</li>
  <li>iPhone 12 Pro</li>
  <li>iPhone 12 Pro Max</li>
  <li>iPhone 12 Mini</li>
  <li>iPad Air</li>
  <li>iPad Pro</li>
  <li>iMac</li>
  <li>Mac book Air</li>
  <li>Mac book Pro</li>
  <li>Mac Pro</li>
  <li>Test</li>
</ul>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-06 11:16:27

使用.value

下面是一个更短、更好的脚本:

代码语言:javascript
复制
const lis = document.querySelectorAll('#phone li');
document.getElementById('search').addEventListener('input', function() {
  const val = this.value.trim().toLowerCase(); // remove the two .toLowerCase() if you want to be case sensitive
  lis.forEach(li => li.hidden = search != "" && !li.textContent.toLowerCase().includes(val));
})
代码语言:javascript
复制
<input type="text" id="search" autocomplete="off">
<ul id="phone">
  <li>iPhone 12</li>
  <li>iPhone 12 Pro</li>
  <li>iPhone 12 Pro Max</li>
  <li>iPhone 12 Mini</li>
  <li>iPad Air</li>
  <li>iPad Pro</li>
  <li>iMac</li>
  <li>Mac book Air</li>
  <li>Mac book Pro</li>
  <li>Mac Pro</li>
  <li>Test</li>
</ul>

票数 0
EN

Stack Overflow用户

发布于 2022-07-06 11:18:03

您需要输入的值

代码语言:javascript
复制
function search() {
  let search = document.querySelector('#search');
  let li = document.querySelectorAll('li');
  for (let data of li) {
    console.log(data.textContent.indexOf(search.value))
    if (data.textContent.indexOf(search.value) > -1) {
      data.style.display = '';
    } else {
      data.style.display = 'none'
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-07-06 11:19:19

您应该使用.value来获取文本输入的值。在下面的代码段中,使用.toLowerCase()。它将显示元素(li),而不管它的情况如何。

代码语言:javascript
复制
function search() {
  let search = document.querySelector('#search').value.toLowerCase();
  let lists = document.querySelectorAll('li');
  const listsLen = lists.length;
  
  for (let i = 0; i < listsLen; ++i) {
    const listContent = lists[i].textContent.toLowerCase();
    if (listContent.indexOf(search) > -1) {
      lists[i].style.display = 'block';
    } else {
      lists[i].style.display = 'none';
    }
  }
}
代码语言:javascript
复制
<input type="text" id="search" onkeyup="search()">
<ul id="phone">
  <li>iPhone 12</li>
  <li>iPhone 12 Pro</li>
  <li>iPhone 12 Pro Max</li>
  <li>iPhone 12 Mini</li>
  <li>iPad Air</li>
  <li>iPad Pro</li>
  <li>iMac</li>
  <li>Mac book Air</li>
  <li>Mac book Pro</li>
  <li>Mac Pro</li>
  <li>Test</li>
</ul>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72882460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档