ホームページ  >  記事  >  ウェブフロントエンド  >  スクロール バー、固定タイトル、並べ替え機能を備えた JavaScript テーブル。_JavaScript スキル

スクロール バー、固定タイトル、並べ替え機能を備えた JavaScript テーブル。_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 18:41:501055ブラウズ
コードをコピー コードは次のとおりです:

//使用要求:
//1.将表格的Class命名为:sorttableHold,
//2.表格放置在一个div中,此div设有overflow属性.
//3.表格要求有ID,div要求有ID
//4.要有JQuery.min.js文件
//5.OK.


addEvent(window, "load", sortables_init);

var SORT_COLUMN_INDEX;

function sortables_init() {
// Find all tables with class sortable and make them sortable
if (!document.getElementsByTagName) return;
tbls = document.getElementsByTagName("table");
for (ti=0;tithisTbl = tbls[ti];
if (((' '+thisTbl.className+' ').indexOf("sorttableHold") != -1) && (thisTbl.id)) {
//initTable(thisTbl.id);
ts_makeSortable(thisTbl);
}
}
}

function ts_makeSortable(table) {
if (table.rows && table.rows.length > 0) {
var firstRow = table.rows[0];
}
if (!firstRow) return;

// We have a first row: assume it's the header, and make its contents clickable links
for (var i=0;ivar cell = firstRow.cells[i];
var txt = ts_getInnerText(cell);
cell.innerHTML = ''onclick="ts_resortTable(this, '+i+');return false;">' +
txt+'   
';
}
if(table!=undefined)//分离
{
$('
').insertBefore('#' table.parentNode.parentNode.id);//DIV を作成します
var div_title=document.getElementById(table.id 'Title'); true)//すべてをタイトルにコピーします
for(i = title.rows.length -1;i >0;i--)//タイトルのすべてのコンテンツを削除し、最初の行、つまりタイトルのみを残します
title.deleteRow(i)
table.deleteRow(0)// GridView の最初の行 (title) が削除されるため、コンテンツのみが存在します。
div_title.appendChild(title) //タイトルは div
$("#" div_title.id " table:eq(0)").attr("id",div_title.id "1"); に与えられます。
if (typeof el == "string") return
if (typeof el; == "未定義") { return el };
if (el.innerText) return el.innerText; // 必要ありませんが、より高速です
var str = ""; = el.childNodes;
var l = cs.length;
for (var i = 0; i switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
str = ts_getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
str = cs[i].nodeValue; 🎜>}
}
return str;
}

function ts_resortTable(lnk,clid) {
//
のスパンを取得します。 var ci=0;ci< lnk.childNodes.length;ci ) {//タイトルのスパンを取得します
if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
}
var spantext = ts_getInnerText(span); // タイトル スパンの内容
var td = lnk.parentNode; // セル>var column = clid || td.cellIndex;//Column
var tablecurrent = getParent(td,'TABLE');//Table
var tableid=tablecurrent.id.substring(0,tablecurrent.id. length-6);
var table=document.getElementById(tableid);
// 列の型を計算します
if (table.rows.length sortfn = ts_sort_caseinsensitive;
if (itm.match(/^dd[/-]dd[/-]dddd$/) ) sortfn = ts_sort_date;
if (itm.match(/^dd[/-]dd[/-]dd$/)) sortfn = ts_sort_date; )) sortfn = ts_sort_currency;
if (itm.match(/^[d.] $/)) sortfn = ts_sort_numeric;
SORT_COLUMN_INDEX = 列; var newRows = new Array() ;
for (i=0;i for (j=0;j< ;table.rows.length;j ) { newRows[j] = table.rows[j] }

newRows.sort(sortfn); (span.getAttribute("sortdir ") == 'down') {
ARROW = ' ↑';
newRows.reverse();
span.setAttribute('sortdir','up');
} else {
ARROW = ' ↓';
span.setAttribute('sortdir','down');
}

// 既存の子行を追加しますtbody なので、新しいものを作成するのではなく移動します
// sortbottom rows を実行しません
for (i=0;i{ if (!newRows[i ].className || (newRows [i].className && (newRows[i].className.indexOf('sortbottom') == -1))) table.tBodies[0].appendChild(newRows[i]);}
// sortbottom 行のみを実行します
for (i=0;i{ if (newRows[i].className && (newRows[i].className.indexOf(' sortbottom') != -1 )) table.tBodies[0].appendChild(newRows[i]);}

// 表示されている可能性のある他の矢印を削除します
var allspans = document.getElementsByTagName ("スパン");
for (var ci=0;ciif (allspans[ci].className == 'sortarrow') {
if (getParent( allspans[ci],"table ") == getParent(lnk,"table")) { // 同じテーブル内ですか?
allspans[ci].innerHTML = ' '>}

}

span.innerHTML = ARROW;
$('#' tableid ' tr:even').css("background-color","FFF7E8"); ('#' tableid ' tr :odd').css("background-color","#CCE8CF");
}

function getParent(el, pTagName) {
if (el == null) return null;
else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) // Gecko のバグ、大文字であるはずです
return el;
else
return getParent(el.parentNode, pTagName);
}
function ts_sort_date(a,b) {
// y2k 注: 50 未満の 2 桁の年は 20XX として扱われます。 、50 を超える場合は 19XX として処理されます。 {
dt1 = aa.substr(6,4) aa.substr(3,2) aa.substr(0,2);
} else {
yr = aa.substr(6,2) ;
if (parseInt (yr) dt1 = yr aa.substr(3,2) aa.substr (0,2);
}
if (bb.length == 10) {
dt2 = bb.substr(6,4) bb.substr(3,2) bb.substr(0, 2);
} else {
yr = bb.substr(6,2);
if (parseInt(yr) dt2 = 年 bb.substr(3,2) bb.substr(0,2);
if (dt1==dt2) 戻り値
if ( dt1 戻り値
}

function ts_sort_currency(a,b) {
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
return parseFloat(aa) - parseFloat(bb);
}

function ts_sort_numeric(a,b) {
aa = parseFloat(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
if (isNaN(aa)) aa = 0;
bb = parseFloat(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
if (isNaN(bb)) bb = 0;
aa-bb を返します。
}

function ts_sort_caseinsensitive(a,b) {
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
if (aa==bb) は 0 を返します。
if (aa1 を返します。
}

function ts_sort_default(a,b) {
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
if (aa==bb) は 0 を返します。
if (aa1 を返します。
}


function addEvent(elm, evType, fn, useCapture)
// addEvent および RemoveEvent
// IE5、NS6、および Mozilla のクロスブラウザー イベント処理
// スコット・アンドリュー著
{
if (elm.addEventListener){
elm.addEventListener(evType, fn, useCapture);
true を返します。
} else if (elm.attachEvent){
var r = elm.attachEvent("on" evType, fn);
r を返します;
} else {
alert("ハンドラーを削除できませんでした");
}
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。