私は二つのことを行う必要があるのDataTableがあります。Datatables:each()をイベントリスナーの内部で使用できますか?
- 合計列のすべての数字を。
- 別の列のセルに一定の値があるかどうか調べ、存在する場合は空白にします。 (理由:日付を挿入しないと、デフォルトの日付が "1970-01-01"のMySQLテーブル。 "1970-01-01"のインスタンスをすべて空のセルに置き換えます)。
はそれをするために、私はその後、ドローイベントにイベントリスナーを添付し、:
1の場合- は)私は()DataTableのプラグイン合計を使用しました。
2)については、私はこの答えに従いました:Find and replace cells value with Datatables plugin、each()を使用しました。
var tabla=$('#list').DataTable(); tabla.on('draw.dt', function() { var bla=tabla.column(10).data().sum(); tabla.column(9).nodes.each(function(node, index, dt) { var ble=tabla.cell(node).data(); if (/^1970-01-01/.test(ble)) { table.cell(node).data(''); } }); });
問題は、私はこれを実行すると、私は得る、ということです "tabla.column(...を)。nodes.eachは関数ではありません"。このエラーは、jQueryやデータテーブルがまだ初期化されていないときに発生します。しかし、私の場合は、最初のもの(sum())が終わらせる;つまり、「bla」変数が計算されます。
これは、イベントトリガー内でeach()を使用できるかどうか疑問です。さもなければ、これを引き起こす原因は何ですか?
お寄せいただきありがとうございます。私が間違っていれば私を訂正してください:実行時に "render()"関数を設定することはできません。私の問題は、Webアプリケーションで設定されたDatatableで作業していることです。そのソースコードに触れないでください。つまり、データテーブルを初期化するコードを変更することはできません。イベントリスナーを作成した後でしかイベントリスナーをアタッチできません。 – PaulJ
ああ、私は見る!、その場合、あなたはイベントで立ち往生していると思います。テーブルが初期化されると起動する 'init'イベントを試してみることができます[Here](https://datatables.net/reference/event/)はあなたが作業できるイベントの完全なリストです。ちなみに、[docs](https://datatables.net/manual/events#Listening-for-events)によれば、あなたの例では、 '.dt'名前空間は必要ないはずです – Sebastianb