var list = [ {name: "tsuyoshi", address: "kyoto", from: "kanagawa"}, {name: "ryoko", address: "kyoto", from: "osaka"} ];
このオブジェクトから
表の各オブジェクトの値であるtbodyの方を作成してみます。
function buildTable(){ //ここまでのコードは省略 //theadをtableに入れる table.appendChild(thead); //tbodyをtableに入れる table.appendChild(buildTbody()); return table; } //の部分だけ組み立てる function buildTbody(){ }
buildTable関数のreturn table;の前にbuildTbody関数を用意して、そこでtbodyの箇所を作成します。
//<tbody>の部分だけ組み立てる function buildTbody(){ var tbody = document.createElement("tbody"); //forの中で使用する変数はforの前で定義しておく var tr; var td; //listから各人のオブジェクトを取得する for (var i = 0; i < list.length; i++ ) { var personObj = list[i]; tr = document.createElement("tr"); //オブジェクト内にある各要素をtdで挟んでtrタグに入れる for ( key in personObj ) { td = document.createElement("td"); td.innerText = personObj[key]; tr.appendChild(td); } tbody.appendChild(tr); } return tbody; }
buildTbody関数内で、tbodyを作成した後、最初のforで配列の中にある各人の情報が入ったオブジェクト、次のforでオブジェクトの中に入っている各値を呼び出し、DOM操作でtdで囲って、
<tbody> <tr> <td>tsuyoshi</td> <td>kyoto</td> <td>kanagawa</td> </tr> <tr> <td>ryoko</td> <td>kyoto</td> <td>osaka</td> </tr> </tbody>
このようなHTMLタグのオブジェクトを作成して、buildTable関数内でtableのtheadの後に作成したtbodyのタグを挿入します。ここまでのコードを実行してみると、
最初に用意したlistオブジェクトの値を元に表ができました。試しに
var list = [ {name: "tsuyoshi", address: "kyoto", from: "kanagawa"}, {name: "ryoko", address: "kyoto", from: "osaka"}, {name: "taro", address: "tokyo", from: "hokkaido"} ];
新しい人のオブジェクトを追加して、コードを実行してみると、
新しく追加した人の情報も表示されます。これで人数がいくら増えても、追加に合わせて行を追加することができる様になりました。登録: コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿