Javascript 有没有办法制作这样的搜索栏?

Javascript 有没有办法制作这样的搜索栏?,javascript,jquery,Javascript,Jquery,因此,我使用javascript和jquery创建了一个搜索栏,循环遍历一个对象列表,并使用if语句检查输入值是否包含数组中的内容。然后,如果它确实包含该项,则该项将作为选项添加到select中,如果用户删除输入中的字符,则列表将为空 但我似乎不能让它工作 这就是我得到的: <input class="type" value="" /> <select class="opties"> </select&g

因此,我使用javascript和jquery创建了一个搜索栏,循环遍历一个对象列表,并使用if语句检查输入值是否包含数组中的内容。然后,如果它确实包含该项,则该项将作为选项添加到select中,如果用户删除输入中的字符,则列表将为空

但我似乎不能让它工作

这就是我得到的:

<input class="type" value="" />
<select class="opties">

</select>

$('.type').on('keyup', function() {
        let input = $('.type').val().toLowerCase();
        let pc = ['Processor', 'Ram', 'Videokaart', 'Voeding', 'SSD', 'Fans'];

        for(let i=0; i<pc.length;i++) {
            if(!pc[i].toLowerCase().includes(input)) { 
                $('.opties').remove(pc[i])
            } else {
                $('.opties').append("<option>"+pc[i]+"</option>")
            }
            if(input == '') {
                $('.opties').empty();
            }
        }
    })

$('.type')。在('keyup',function()上{
让输入=$('.type').val().toLowerCase();
让pc=[“处理器”、“Ram”、“Videokaart”、“Voeding”、“SSD”、“风扇”];
对于(让i=0;i这样的东西

const pc=['Processor'、'Ram'、'Videokaart'、'Voeding'、'SSD'、'Fans'];
$('.type')。在('keyup',function()上{
常量输入=$('.type').val().toLowerCase();
对于(让pc选项){
$(`.opties选项[name='${option}']`).remove()
if(option.toLowerCase().includes(input)和&input.length)
$('.opties').append(`${option}`)
}
})

另一种方法是对数组进行
筛选()
并在每次更新时插入新选项

您可能希望对其进行限制或取消限制,以便用户有时间输入

let$sel=$('.opties'))
$('.type')。在('input',function()上{
$sel.empty()
让输入=$('.type').val().trim().toLowerCase();
让pc=[“处理器”、“Ram”、“Videokaart”、“Voeding”、“SSD”、“风扇”];
if(输入长度){
const filtered=pc.filter(v=>v.toLowerCase().includes(输入));
const opts=filtered.map(v=>newoption(v,v));
$sel.append(选项)
}
});


请回答您的问题,并添加一个,以便我们为您提供帮助。
如果($('.opties').children())
将始终是真实的。它是一个jQuery对象,对象是真实的。传递artbitrary文本以删除()没有意义请提供一个更新的问题这足够吗?@charlietflI不会给他们不同的名字,但也许ID…你仍然应该解释他的代码错误的原因,问题是什么?这个代码确实有效,正是我正在寻找的,我理解你的代码是如何工作的。谢谢你的回答和帮助,但是n下次解释你的代码。@skobaljic只有一个附加。不知道你在问什么