我正在制作一个搜索栏,但出现了一个奇怪的错误,而该错误尚未被众多其他相同错误的帖子解决。我有一个数组,并且我正在使用forEach
登录到控制台,具体取决于数组的index
。但是,我收到此错误:
TypeError: undefined is not an object (evaluating 'sites[index].indexOf')
我的代码如下:
var sites = ["Website 1", "Website 2", "Youtube Test Page", "Go to google", "testing for foreward slashes", "MORE!!! :)", "beachballs", "test2", "Good Luck"];
function search() {
var input = $("#searchBar")[0].value;
sites.forEach(function(index) {
console.log(input);
if (sites[index].indexOf(input) != -1) {
console.log("yay");
}
})
}
这是我的搜索栏:
<input type="text" placeholder="Search the web" id="searchBar" onkeyup="search()"/>
我做了很多研究都无济于事,因此,我希望获得一些帮助。
答案 0 :(得分:6)
sites
是一个 array ,而不是jQuery集合,因此,当您在其上调用forEach
时,回调的第一个参数是要迭代的 item ,而不是索引。更改为:
sites.forEach(function(site) {
console.log(site);
if (site.indexOf(input) != -1) {
console.log("yay");
}
})
答案 1 :(得分:1)
var sites = ["Website 1", "Website 2", "Youtube Test Page", "Go to google", "testing for foreward slashes", "MORE!!! :)", "beachballs", "test2", "Good Luck"];
function search() {
var input = $("#searchBar")[0].value;
sites.forEach(function(value,index) {
console.log(input);
if (sites[index].indexOf(input) != -1) {
console.log("yay");
}
})
}
答案 2 :(得分:1)
Array.forEach回调具有3个参数。
使用三个参数调用回调:
元素值
元素索引
要遍历的数组
arr.forEach(function callback(currentValue[, index[, array]]) {
//your iterator
});
根据您的情况,您只需要第一个参数currentValue
。