Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤网格时的部分匹配_Javascript_Filter_Slickgrid_Header Row - Fatal编程技术网

Javascript 过滤网格时的部分匹配

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

因为我没有足够的声誉来评论,所以我将此作为一个单独的问题发布。我试图实现用户LFReD给出的解决方案,作为对这个问题的回答:

当我从最初的SlickGrid示例中使用此选项时:

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;
}