【发布时间】:2020-12-13 14:10:23
【问题描述】:
当用户在搜索字段中输入数字时,具有该数字的图像会填充图像轮。当用户输入 49 时,应该会出现带有数字 49 的图像。相反,当前代码让我获得所有编号为 4 的图像和所有编号为 9 的图像(如 14、19、244、596 等),而不是返回一个图像 #49。 filter() 不起作用,includes() 不起作用, indexOf() 不起作用。如何获取输入数字对应的一张图片?
function searchInspired() {
$(".treatment").each(function() {
$(this).removeClass('searched');
});
var searchNum = document.getElementById('searchField').value; //user input
//treatments is an array of images declared globally
for (var i=0; i<treatments.length; i++){
if (treatments[i].number.toString().indexOf(searchNum) !== -1){
console.log(treatments[i]);
treatments[i].$elem.addClass('searched');
}
}
$('.treatment').each(function(index, el){
if(!$(el).hasClass('searched')){
$(el).hide();
}
else{
$(el).show();
}
});
}
【问题讨论】:
-
这听起来很奇怪。
treatments[i].number.toString().indexOf(searchNum) !== -1应该只包含searchNum(例如49)在treatments[i].number某处作为精确子字符串出现的结果。您能否制作一个 Stack Snippet 来说明问题,以便我们可以使用 minimal reproducible example 进行调试? -
你为什么不能直接使用
treatments[i].number.toString() == searchNum? -
是的,我得到 49 和所有其他包含 9 或 4 的数字。如何制作 Stack Snippet,您需要查看哪些内容?
-
E,g jsfiddle.net 复制您的代码(HTML、JS 和必要时的 CSS),保存并发布链接。
-
好的,你能重现它吗,因为它都是数据库驱动的?
标签: javascript arrays include indexof