table12 ■自動■ table2個・項目複数E    UP日時 : 2015/01/26

データ項目が複数の、JavaScriptの自動作成のtableです。データにはタグが使用できます。
■今回のJavaScriptでは、左側に自動で番号を付け、背景色を変更し、2個のtableを表示しています。
一番下にソースを3個表示しています。
◆1個目は、1番上のtableのみのソースです。前回Dとの違いは、番号欄に文字を組み合わせている点です。
◆2個目は、2番目のtableのみのソースです。前回Dとの違いは、番号欄の記述以外に、上側の項目が無い点です。
◆3個目は、1番目と2番目を合わせた、このページと同じソースです。
それ以外の前回Dとの違いは、CSSでの装飾の違いです。


---------------------●2個のtableを作成するには
いままでは、JavaScriptのtable組立部分に id='Tb'を記述していましたが、今回は2個のtableを作成し、2個とも同じ装飾をしているので class='Tb'に変更しています。( " ではなく ' を使用します)
しかしもし2個のtableに別々の装飾をするなら、2個目のtableに別のid名なりclass名を指定して、その名でCSSで装飾することも可能です。
見た目はひとつのtableを、2つに分解して表示しているように見えますが、実は別個のtableなのです。
だから2個目のtableの横のデータ数は、1個目のtableのデータ数と違ってもかまいません。行も違っても構いません。
2個目のtableは 上項目無し、番号付の見本のために作成したものなので、bodyに位置指定をする時も、続けて記述する必要もないのです。
<div id="wakuT"></div>
いろいろな文章、いろいろな文章、いろいろな文章
<div id="wakuT2"></div>
という記述の仕方も可能です。

でもほんとうは今回の例のような場合は、わざわざ2個のtableにしなくてもデータ行は増減可能なので、1個目のtableのデータ行の下に2個目のtableのデータ行を追加で記述して、1個のtableにまとめた方が簡単です。
ただしその場合は、2個目のtableのデータの、
Tco2[ii++]=〜〜〜の部分は、1個目のtableのデータと同じ、
Tco[i++]=〜〜〜に変更して下さい。
なお、2個のtable同士でデータ行の入れ替えをする時は、別個のtableなので、、上記のように、Tco[i++]とTco2[ii++]の記述も、tableに合わせて書き直す必要があります。

---------------------●番号指定の方法
前回Dでも説明しましたが、番号は自動で、上からの連番で付きます。

1個目のtableの番号指定は
ttt+="<th>第"+(i+1)+"位</th>";   //★番号指定。「第 位」の文字が不要なら文字部分を削除。(i+1)で1から出る
文字を組み合わせない場合は
ttt+="<th>"+(i+1)+"</th>";     //★番号指定。「第 位」の文字が不要なら文字部分を削除。(i+1)で1から出る

2個目のtableの番号指定は
ttt2+="<th>第"+(ii+6)+"位</th>";  //★番号指定。「第 位」の文字が不要なら文字部分を削除。(ii+6)で6から出る。
文字を組み合わせない場合は
ttt2+="<th>"+(ii+6)+"</th>";    //★番号指定。「第 位」の文字が不要なら文字部分を削除。(ii+6)で6から出る。
さらに1個目のtableと同じように番号を1から出すには
ttt2+="<th>"+(ii+1)+"</th>";

とします。( //から以下の部分はコメント欄になるので、JavaScript上は何を記述しても動作に影響しません)
このページの説明文をコピーする時は、< と > は半角文字に変更して下さい。


1.位置指定の方法
いろいろと面倒なので、今回から位置指定はdivの#wakuTではなく、tableの#Tbでします。
そのまえに、この二つの説明をします。
この自動tableは、bodyに<table id="Tb"></table>と記述しても表示しないので、tableを<div id="wakuT"><table id="Tb">〜〜〜</table></div>で囲む形で表示しています。
ただし、<table id="Tb">〜〜〜</table>の部分はJavaScriptのソースの中に記述してあります。
いろいろな文章の下にこのtableを表示したい時、そのbodyの中の場所に<div id="wakuT"></div>を記述することで、tableの位置指定ができるのです。

ところがdivは、は左から●px、上から●pxという位置指定は簡単ですが、中央配置するには、横幅サイズを指定しないとできません。
サイズ指定ができれば問題ないのですが、今回のように大量のデータを並べると具体的なサイズが不明です。
しかしtableは、具体的な横幅がなくても中央配置が可能です。だからtableの#Tbで位置指定する方が、簡単なのです。

ただし、サイトによっては、表示領域本体の横サイズを900pxとか80%とか、指定されているところも有ります。
そんなサイトでは、上記のような横サイズがわからないという大きなtableの作成方法では困られると思います。
その場合はtableの#Tbに、width:850px;とかwidth:90%;(%指定の場合、本体80%の中の90%という意味)を指定して下さい。
こうすれば、セルの中身が表示しきれない部分は自動的に改行します。
#wakuTと#Tbの関係は、ためしに#wakuTに背景色を指定してみるとわかります。

2.1個目のtableのセルのデータ記述方法
Tco[i++]=["キラキラ星","自動スライド超簡単","雪が降る(全面&範囲)","星が踊る -ぱーぷりん-","ランダム背景body・左端"];
   :
   :
Tco[i++]=["回転する文字","クリックでスライド","キラキラ星が降る","ふわふわ天使","ランダムスライドbody・左端"];

上記が今回の1個目のtableのデータの記述です。
見本では["A0","A1","A2","A3","A4"];と、横1行に5個のデータが並んでいます。次の行は
["B0","B1","B2","B3","B4"];
["C0","C1","C2","C3","C4"];
   :
   :
["G0","G1","G2","G3","G4"];
JavaScriptではデータ番号は1ではなく0から始まるので、この例では横に5個のデータが並んでいます。
この5個の指定は、自由に変更できます。ただし、それぞれの縦に並んだ行は、同じ個数のデータで揃えなければなりません。
上の行は5個、2行目は3個、3行目は4個なんてことはできません。
縦の行ももちろん増減可能です。見本は7行ですが、3行でも20行でも可能です。

5個で作成したけど、最後の行は3個しかないなら、
["G0","G1","G2","",""];

7個で作成したけど、2行目の3個目のデータを削除したいなら、
["B0","B1","","B3","B4","B5","B6"];

データが無い部分は "" を記述して、個数を揃えて下さい。 "" の部分は空白で表示されます。


他のJavaScriptとの記述の違い
項目が1個だけでも複数でも、このtableのJavaScriptは、他の当サイトのJavaScriptと大きく違う点があります。
それはデータ番号を記述する場所に、数字が入ってない点です。普通は
Tco[0]=〜〜〜
Tco[1]=〜〜〜
Tco[2]=〜〜〜
と、数字が入っているところが、
Tco[i++]=〜〜〜
Tco[i++]=〜〜〜
Tco[i++]=〜〜〜
となっています。
これは行の入れ替えを簡単にするためです。数字を入れていると、下の行を上にしたり途中の行を丸ごと削除した時には、番号を付け直す必要があります。

じゃあ、他のJavaScriptもそうすればいい?
いえいえ、たとえばコメント付きの簡単スライドショーの場合を考えてみて下さい。
数字を付けることで、ga[0]の画像にmes[0]のコメントが記述しやすくなります。
数字が無いと間違えて ga[3]の画像に、mes[4]のコメントを付けてしまったりします。間違えた場合、どの行を間違ったのかの把握も難しいです。
でも画像だけのスライドショーの場合は、ga[i++]で記述してあれば、最新の画像を一番上に記述して、数字を書き直す必要がないというメリットはあります。
ケース・バイ・ケースでどうぞ。
tableの場合も、「行の入れ替えや削除をする必要が全くない」か、「入れ替えたり削除したら、自分で数字を書き直す」のであれば、
Tco[0]=〜〜〜
Tco[1]=〜〜〜
Tco[2]=〜〜〜
と記述しても、大丈夫です。


なお参考にしたサイトがたくさんあります。代表的なものを4つだけ紹介します。
セルの背景色の2色カラーは、イヌでもわかるJavaScript講座から。
table作成をinnerHTMLで記述する方法は、OKWaveのzousan77さんの回答から。
データの項目のまとめ方は、無数のJavaスクリプトサンプル(SCRIPT OF ANGER)日本旭日党から。
配列の要素に別の配列リテラルを格納して多次元配列のように扱う方法は、AjaxTowerから。

◆番号付、上項目付きのソース◆1個目のtable
ソースの中でマウスの右クリックで『すべて選択』した後に、
再度右クリックして『コピー』

◆番号付、上項目無しのソース◆2個目のtable
ソースの中でマウスの右クリックで『すべて選択』した後に、
再度右クリックして『コピー』

◆全ソース◆2個のtable
ソースの中でマウスの右クリックで『すべて選択』した後に、
再度右クリックして『コピー』