【问题标题】:change datatable cell background function更改数据表单元格背景功能
【发布时间】:2019-12-01 15:24:34
【问题描述】:

返回datatable 的数据后,我希望能够使用名为changeCell() 的函数根据单元格数据更改单元格背景颜色。

function changeCell(day)
{
  if(day == "SPAIN")
  {
    return $(nTd).css({'background-color': '#33CC33'});
  }
  if(day == "NEW YORK")
  {
    return $(nTd).css({'background-color': '#AFD645'}); 
  }
  // and so on
}

这是数据表(尽可能简化):

$.ajax({
  url: 'process/getData.php',
  type: 'POST',
  data: data,
  dataType: 'html',
  success: function(data, textStatus, jqXHR){
    var jsonObject = JSON.parse(data); 
    var table = $('#example1').DataTable({  
      "data": jsonObject,
      "columns": [ 
        {
          "data": "DAY_MON",
          "fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
          {
            changeCell(oData.DAY_MON); // function call here
          }
        }
      ]
    });
  },
  error: {
    // bunch of error stuff
  }
});

但是,当我调用该函数时,出现以下错误:

Uncaught ReferenceError: nTd is not defined

我假设错误是因为函数无法识别nTd,但nTd 是我需要返回到datatable 的原因。

我怎样才能使这个功能起作用?

【问题讨论】:

  • nTd 不在您的 changeCell 函数的范围内,您是否尝试将其作为参数传递?
  • 我不得不承认,创建自定义函数并不是我的强项之一,我知道我需要掌握它。话虽如此,我不确定我将如何通过 nTd。
  • 我已经发布了一个答案来解释如何执行参数传递。

标签: javascript jquery function datatable


【解决方案1】:

由于nTd 不在您的changeCell 函数的范围内,您必须像其他参数一样将其作为参数传递给它:

"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
    changeCell(nTd, oData.DAY_MON);
}

然后您将函数的定义更改为:

function changeCell(nTd, day) {
    // ...
}

【讨论】:

  • 先生,您有天才级别的智慧。谢谢你。这对我有用。我保证会使用我的自定义函数。
  • 我很高兴,您需要知道的所有内容才能开始了解您可以在 MDN Functions 文档中找到的函数和范围。它对范围有很好的解释和示例。
【解决方案2】:

我认为你可以使用 jQuery Datatable 内置函数

var dt= $('#example1').DataTable({ 
    'rowCallback': function(row, data, index){
     $(row).find('td:eq(1)').css('color', 'black') //1 is index of your td
  }
});

见工作here

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2023-03-26
    • 1970-01-01
    • 2020-04-08
    • 2012-02-23
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2021-03-23
    相关资源
    最近更新 更多