表の削除
tableのtbody要素の行を削除します。
function clearTbody() {
var tbodies = document.getElementsByTagName("tbody");
for (var i = 0; i < tbodies.length; i++) {
while (tbodies[i].rows.length > 0) {
tbodies[i].deleteRow(0);
}
}
}
表のソート
表中のデータをソートして表を書き換え
(1)ページのロード時
配列rowに各行の要素を代入。
(2)▲、▼のクリック時
指定された列の値の順に配列rowをソート。
配列rowをソート後にtbody要素内の行を全て削除し、ソートされた配列rowを順番に追加することで、表のソートを行う。
(ページのロード時に呼び出される関数)
function init(){
// tr要素
var tr = document.getElementsByTagName('tr');
// 見出し行を除く行の数
n_rows = tr.length-1;
// 見出し行を除くテーブルの行を配列rowに代入
for( i=0; i
(表のソート)
// col→列の番号、asc→昇順:true 降順:false
function sortTable(col, asc){
// ソート対象の列を配列cellに代入
for( i=0; i
(配列rowのソート)
// 配列cellの順に配列rowをソート
function sortData(asc){
var tmp;
var finish_sort = false;// 交換をしなければソート終了
while(!finish_sort){
finish_sort = true;
for( i=0; icell[i+1]) || // 昇順
(!asc && cell[i]
(テーブルの置き換え)
(表)
|
氏名
|
▲
ふりがな
▼
|
▲
会員番号
▼
|
| 原太 | はらふとし | 7845783 |
| 馬場一 | ばばはじめ | 1536853 |
| 林茂 | はやししげる | 8562834 |
| 松武子 | まつたけこ | 4684568 |
| 岡登 | おかのぼる | 6453823 |
配列のデータをソートして動的に表を生成
テーブルデータをオブジェクトデータ配列に格納し、それを元に表を動的に生成。
|
氏名
|
▲
ふりがな
▼
|
▲
会員番号
▼
|
▲
生年月日
▼
|
|
行のハイライト
テーブルのマウスポインタを当てた行をハイライトするには、tr要素に対してonmouseoverイベントハンドラを定義し、Element.style.backgroundColorを設定します。
マウスポインタをはずした時に元に戻るようにonmouseoutイベントハンドラも定義します。
function hightlight(target, color){
target.style.backgroundColor = color;
}
列のハイライト
テーブルのマウスポインタを当てた列をハイライトするには、table要素にonmouseoverベントハンドラを定義し、イベントのあったtd要素を求めます。
(1)イベントのあった要素を取得
targetプロパティで取得・・・InternetExploreではsrcElementプロパティ。
var elem = (evt.target) ? evt.target : evt.srcElemenmt;
(2)イベントのあったtd要素を判別したら、同じ行のtd要素をElem.parentNode.childNodesで求める。
(3)同じ列のtd要素の背景色を設定する。
function hightlight(evt,color){
// W3C DOMとIEの両方のイベントオブジェクトに対応
evt = (evt) ? evt : ((event) ? event : null);
if( evt ) {
// イベントのあった要素(td)を求める
var elem = (evt.target) ? evt.target : evt.srcElement;
if( elem ) {
// イベントのあった要素と同じ行の要素
var sisters = elem.parentNode.childNodes;
// イベントのあった列の番号noを求める
var no = 0;
while(no
(背景色の設定)
// すべてのセルの背景色を設定する
function clearBgColor(color){
var cells = document.getElementsByTagName("td");
for(var i=0; i