質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3436閲覧

Jquery Datatableのfooterで合計/総合計を表示したい

kumakake

総合スコア42

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/08/17 08:26

DataTableを使ってフッターの1行目にページ合計、2行目に総合計を表示しようとしています。
https://datatables.net/

html

1 <tfoot> 2 <tr> 3 <th></th> 4 <th></th> 5 <th></th> 6 <th></th> 7 <th></th> 8 <th></th> 9 <th></th> 10 <th></th> 11 <th>合計</th> 12 <th>0</th> 13 </tr> 14 <tr> 15 <th></th> 16 <th></th> 17 <th></th> 18 <th></th> 19 <th></th> 20 <th></th> 21 <th></th> 22 <th></th> 23 <th>総合計</th> 24 <th>0</th> 25 </tr> 26 <tfoot>

javascript

1 "footerCallback" : function ( row, data, start, end, display ){ 2 var api = this.api(), data; 3 4 // Remove the formatting to get integer data for summation 5 var intVal = function ( i ) { 6 return typeof i === 'string' ? 7 i.replace(/[$,]/g, '')*1 : 8 typeof i === 'number' ? 9 i : 0; 10 }; 11 12 // Total over all pages 13 total = api 14 .column( 9 ) 15 .data() 16 .reduce( function (a, b) { 17 return intVal(a) + intVal(b); 18 }, 0 ); 19 20 // Total over this page 21 pageTotal = api 22 .column( 9, { page: 'current'} ) 23 .data() 24 .reduce( function (a, b) { 25 return intVal(a) + intVal(b); 26 }, 0 ); 27 28 // Update footer 29 $( api.column( 9 ).footer() ).html( 30 total 31 ); 32 },

これで合計は表示されるようになったのですが、総合計のカラムの行を指定する方法がわかりません。

javascript

1 $( api.column( 9 ).footer() ).html( 2 total 3 );

はダメでしたorz

ご存じの方、ご教授ください。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは

<tfoot> の中に <tr> が複数行ある場合に、.footer() にパラメータを渡せて、例えば

api.column( 9 ).footer(0)

で、最初の行の該当セルを参照し、

api.column( 9 ).footer(1)

で、次の行の該当セルを参照してくれたりしないのかなと思いつつ、ドキュメントを調べましたが、(残念ながら)以下の記載がありました。

If you have multiple rows in the footer that you wish to manipulate you must use the table().footer() method to obtain the table footer element and then use standard DOM / jQuery methods to manipulate the node.

上記曰く、

フッターに複数行が含まれる場合は、 table().footer() メソッドでフッター要素が取れるので、それに対して通常の DOM または JQuery による操作をしてください。

ということのようです。

参考のため、上記に沿った簡単なサンプルを作成して、以下に上げておきました。

このレポジトリには、 Footer callback に掲載されているサンプルの表の <tfoot> に 2行目の <tr> を追加し、総合計はそちらに記載するように修正したもので、以下の手順で修正しています。

  • 最初のコミット では、掲載されているサンプルをそのままコピペして作成した各ファイルをコミットしています。

  

api.table().footer()<tfooter> を取得し、これに含まれる(2つの)金額表示セルに各合計金額を表示させています。

以下の画像は、修正後のHTMLを表示させたところです。

イメージ説明

以上、参考になれば幸いです。

投稿2019/08/17 12:18

編集2019/08/17 13:46
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakake

2019/08/17 21:37

ありがとうございます! 試して報告入れます!
kumakake

2019/08/17 23:54

確認できました。 助かりましたm(_ _)m
jun68ykt

2019/08/18 00:12

コメント、ありがとうございます。解決されましたようで、よかったです ???? 回答に書いた修正案が唯一の方法というわけでなく、他にも tfootが2行である場合の対応例(別案) https://git.io/fjFmy といった方法もありますし、他にもやり方はありそうです。 サポート https://datatables.net/forums/ の検索ワードに multiple rows in footer と入れて、投稿者の質問や要望と、ライブラリ提供者側の回答をざっと読んでみても、ライブラリ制作者としては、 現状、column().footer() では、 <tfoot> の中の2行目以降は取得できないので、2行以上ある場合は、api.table().footer() で <tfoot> を取ってきて、あとは、いつもの DOMやJQueryのやり方で、お好きにどうぞ ということのようです。
kumakake

2019/08/20 05:42

ありがとうございます! 別案のclassでの指定が便利ですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問