Javascript 过滤网格时的部分匹配
因为我没有足够的声誉来评论,所以我将此作为一个单独的问题发布。我试图实现用户LFReD给出的解决方案,作为对这个问题的回答: 当我从最初的SlickGrid示例中使用此选项时:Javascript 过滤网格时的部分匹配,javascript,filter,slickgrid,header-row,Javascript,Filter,Slickgrid,Header Row,因为我没有足够的声誉来评论,所以我将此作为一个单独的问题发布。我试图实现用户LFReD给出的解决方案,作为对这个问题的回答: 当我从最初的SlickGrid示例中使用此选项时: function filter(item) { for (var columnId in columnFilters) { if (columnId !== undefined && columnFilters[columnId] !== "") { var c = mygrid.getCo
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
var c = mygrid.getColumns()[mygrid.getColumnIndex(columnId)];
if (item[c.field] != columnFilters[columnId]) {
return false;
}
}
}
return true;
}
当我输入完整的单词时,它工作。不执行部分匹配
但是,为了执行部分匹配,当我将代码替换为
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
var c = mygrid.getColumns()[mygrid.getColumnIndex(columnId)];
if (item[c.field].indexOf(columnFilters[columnId]) == -1) {
return false;
}
}
}
return true;
}
我在控制台中得到一个错误javascript错误,它读取“UncaughtTypeError:Object 1没有'indexOf'方法”
我无法找出代码中缺少的内容。由于前面的代码工作正常,这意味着我已经在HTML代码中包含了必要的脚本。似乎还是少了些什么。我哪里出错了?更改以下行:
if (item[c.field].indexOf(columnFilters[columnId]) == -1) {
致:
最终产品:
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
var c = mygrid.getColumns()[mygrid.getColumnIndex(columnId)];
if (!(item[c.field] && (""+item[c.field]).indexOf(columnFilters[columnId]) !== -1)) {
return false;
}
}
}
return true;
}
谢谢你的回答。但它现在显示了这个错误:uncaughtypeerror:无法使用'in'运算符搜索'indexOf'
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
var c = mygrid.getColumns()[mygrid.getColumnIndex(columnId)];
if (!(item[c.field] && (""+item[c.field]).indexOf(columnFilters[columnId]) !== -1)) {
return false;
}
}
}
return true;
}