Javascript Webix Datatable cssFormat未打印正确的颜色

Javascript Webix Datatable cssFormat未打印正确的颜色,javascript,webix,Javascript,Webix,我用一些列配置了webix datatable,每个列都有以下属性: cssFormat: colorByProd 在哪里 函数colorByProd(值,配置){ var n=0; var-timeToCompare=0; 对于(变量i=0;i

我用一些列配置了webix datatable,每个列都有以下属性:

cssFormat: colorByProd
在哪里

函数colorByProd(值,配置){
var n=0;
var-timeToCompare=0;
对于(变量i=0;i<8;i++){
如果(值===config[i]){
var time=$$(“detalleTurnoGrid”).getColumnConfig(i).header[0];
var n=parseInt($scope.fecha.substring(11,13));
var timeToCompare=parseInt(time.text.substring(0,3));
如果(时间比较=29)
返回{“color”:“#F7D358”};
如果(值<29)
返回{“颜色”:“红色”};
如果(值>=31)
返回{“颜色”:“绿色”};
}否则{
返回{“color”:“black”};
}
返回值;
}
}
}
因此,对于每列,如果当前小时小于下一小时,则该值应为黑色,例如: -->当前小时==11

如果现在是:11:00,那么11:00列和下一列将是黑色的,但是10:00列将是彩色的(绿-黄-红),这几乎可以完美地工作,但是,我有错误吗

例如:如果值编号存在于其他前一个小时列中,则11:00列的值也会改变颜色,仅当值存在于前一列中时:


感谢您的时间

您的代码似乎有点过于复杂,您不需要在colorByProd内部使用循环,因为代码总是为单个单元格返回颜色

function colorByProd(value, config) {
  var n = 11;
  var timeToCompare = parseInt(this.header[0].text.substring(0, 2));

  if (timeToCompare < n) {
    if (value < 31 && value >= 29)
      return { "color": "#F7D358" };

    if (value < 29)
      return { "color": "red" };

    if (value >= 31)
      return { "color": "green" };

  } else {
    return { "color": "black" };
  }
  return value;
}
函数colorByProd(值,配置){
var n=11;
var timeToCompare=parseInt(this.header[0].text.substring(0,2));
如果(时间比较=29)
返回{“color”:“#F7D358”};
如果(值<29)
返回{“颜色”:“红色”};
如果(值>=31)
返回{“颜色”:“绿色”};
}否则{
返回{“color”:“black”};
}
返回值;
}
检查

function colorByProd(value, config) {
  var n = 11;
  var timeToCompare = parseInt(this.header[0].text.substring(0, 2));

  if (timeToCompare < n) {
    if (value < 31 && value >= 29)
      return { "color": "#F7D358" };

    if (value < 29)
      return { "color": "red" };

    if (value >= 31)
      return { "color": "green" };

  } else {
    return { "color": "black" };
  }
  return value;
}