我正面临一个问题在我的代码,我没有得到一个解决方案,请帮助我,<input type="text">
这是脚本
var obj=[
{name:'sourav',age:20},
{name: 'gautam', age: 25}
]
document.querySelector('input').addEventListener('input',function(){
var text=document.querySelector('input').value.toLowerCase();
for (var i = 0; i < obj.length; i++) {
if (obj[i].name.toLowerCase().includes(text)) {
console.log(obj[i].name);
} } });
我添加一个侦听器的输入字段中输入,输入脚本将搜索文本包含或不obj(对象)如果真的,那么它将在控制台打印日志,只在小项目上工作正常,但是当obj(对象)包含一个巨大的数据,那么这个脚本bugg,当在输入字段中我尝试输入字符更多然后一个花一点时间,在第一次搜索条件,第二个字符打印第一个结果,我不希望。我想我已经解释了我的问题,如果有人有解决办法,请建议我。
问题是文本在你的情况下总是空的,因为只计算一次,而不更新输入
您可以通过将文本更新放入事件侦听器中来解决这个问题,如下所示
var obj=[
{name:'sourav',age:20},
{name: 'gautam', age: 25}
]
document.querySelector('input').addEventListener('input',function(e){
const text = e.target.value.toLowerCase()
for (var i = 0; i < obj.length; i++) {
if (text && obj[i].name.toLowerCase().includes(text)) {
console.log(obj[i].name);
} } });
<input type="text" />