Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 Datatables:您可以在事件侦听器中使用each()吗?_Javascript_Jquery_Datatables - Fatal编程技术网

Javascript Datatables:您可以在事件侦听器中使用each()吗?

Javascript Datatables:您可以在事件侦听器中使用each()吗?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有一个Datatable,在这里我需要做两件事: 将所有数字加在一列中 找出另一列中的单元格是否有某个值,如果有,则将其清空。(原因:如果不插入日期,MySQL表的默认日期为“1970-01-01”。我想用空单元格替换所有“1970-01-01”实例) 为此,我在draw事件上附加了一个事件侦听器,然后: 对于1)我使用了sum()Datatables插件 对于2),我遵循以下答案:,并使用了each() 问题是,当我执行此操作时,会得到一个“tabla.column(…).node

我有一个Datatable,在这里我需要做两件事:

  • 将所有数字加在一列中
  • 找出另一列中的单元格是否有某个值,如果有,则将其清空。(原因:如果不插入日期,MySQL表的默认日期为“1970-01-01”。我想用空单元格替换所有“1970-01-01”实例)
为此,我在draw事件上附加了一个事件侦听器,然后:

  • 对于1)我使用了sum()Datatables插件
  • 对于2),我遵循以下答案:,并使用了each()

问题是,当我执行此操作时,会得到一个“tabla.column(…).nodes.each不是函数”。四处搜索,我发现这个错误大部分是在jQuery或datatable尚未初始化的情况下导致的。。。但在我的例子中,它们肯定是,因为第一件事(sum())确实完成了;换句话说,“bla”变量是可以计算出来的

这让我想知道是否可以在事件触发器中使用each();否则,是什么导致了这种情况?

您可以使用该函数对任意集合进行迭代

然而,尽管我不确定您对该列的总和有何打算,但我还是建议您为涉及的每个列使用该选项

例如,在日期列的情况下,可以使用如下呈现函数:

render: function (data,type,fullRow){
    if(data === '1970-01-01') {
        return null;
    }
    else {
        return data;
    }
}
(免责声明:未经测试!)

每次Datatables需要重新绘制表时都会调用
drawCallback
函数(以及draw事件):初始加载、筛选、排序、添加新行等。这可能会产生一些不可预见的副作用,或者只是影响性能。
希望它能帮助你

谢谢你的建议。如果我错了,请纠正我:您不能在运行时设置“render()”函数,只能在初始化时设置,对吗?我的问题是,我使用的是一个由web应用程序设置的数据表,我不想接触它的源代码;换句话说,我不能修改初始化datatable的代码。我只能在创建后将事件侦听器附加到它。哦,我明白了!,如果是那样的话,我想你会被事情缠住。您可以尝试使用
init
事件,该事件在表初始化后触发,是您可以使用的事件的完整列表。顺便说一句,根据,在您的示例中不需要“.dt”名称空间
render: function (data,type,fullRow){
    if(data === '1970-01-01') {
        return null;
    }
    else {
        return data;
    }
}