您的位置:首页 > 其它

表格排序技巧

2001-07-04 16:27 190 查看
表格排序的方法
function Table (tBody, tHead) {
this.tBody = tBody;
this.tHead =
tHead.constructor == Array ? tHead : new Array();
this.view = null;
}
function Table_sort (compFun, col) {
compFun = compFun || compRows;
compFun.col = col ? col : 0;
this.tBody.sort(compFun);
if (this.view)
this.view.update();
}
Table.prototype.sort = Table_sort;
function compRows (row1, row2) {
var sortCol = compRows.col;
var value1 = row1[sortCol];
var value2 = row2[sortCol];
return value1 < value2 ? -1 :
value1 == value2 ? 0 : 1;
}
function compRowsNum (row1, row2) {
var sortCol = compRowsNum.col;
var value1 = parseFloat(row1[sortCol]);
var value2 = parseFloat(row2[sortCol]);
return value1 < value2 ? -1 :
value1 == value2 ? 0 : 1;
}
function TableView (model, left, top) {
this.id = TableView.cnt;
TableView.views[TableView.cnt++] = this;
this.model = model;
this.model.view = this;
this.left = left || 0;
this.top = top || 0;
this.writeLayer();
}
function TableView_writeLayer () {
var html = '';
html += '';
html += '#tableView' + this.id + ' {';
html += ' position: relative;';
html += ' left: ' + this.left + 'px;';
html += ' top: ' + this.top + 'px';
html += '}';
html += '';
html += '';
html += this.getHTML(this.model);
html += '';
document.write(html);
if (document.all)
this.layer = document.all['tableView' + this.id];
else if (document.layers)
this.layer = document['tableView' + this.id];
else if (document.getElementById)
this.layer = document.getElementById('tableView' + this.id);
}
TableView.prototype.writeLayer = TableView_writeLayer;
function TableView_update () {
var html = this.getHTML();
if (document.layers) {
if (!this.layer)
this.layer = document['tableView' + this.id];
this.layer.document.open();
this.layer.document.write(html);
this.layer.document.close();
}
else if (document.all)
this.layer.innerHTML = html;
else if (document.createRange) {
var r = document.createRange();
if (!this.layer)
this.layer = document.getElementById('tableView' + this.id);
while (this.layer.hasChildNodes())
this.layer.removeChild(this.layer.lastChild);
r.setStartAfter(this.layer);
var docFrag = r.createContextualFragment(html);
this.layer.appendChild(docFrag);
}
}
TableView.prototype.update = TableView_update;
function TableView_getHTML () {
var tHead = this.model.tHead;
var rows = this.model.tBody;
var html = '';
html += '';
for (var r = 0; r < tHead.length; r++) {
html += '';
for (var c = 0; c < tHead[r].length; c++) {
html += '';
for (var c = 0; c < rows[r].length; c++) {
html += '
'
html += tHead[r][c];
html += '';
}
html += '';
}
for (var r = 0; r < rows.length; r++) {
html += '
'
html += rows[r][c];
html += '';
}
html += '';
}
html += '';
return html;
}
TableView.prototype.getHTML = TableView_getHTML;
TableView.cnt = 0;
TableView.views = new Array();

var tHead = [
[
'姓名',
'课程',
'分数']];
var tBody = [['Meng', '语文', 100],
['孟子', '外语', 99],
['小孟', '数学', 300]
];
var table1 = new Table(tBody, tHead);
var table1View;

table1View = new TableView (table1,315,20);

 代码如下:

function Table (tBody, tHead) {
this.tBody = tBody;
this.tHead =
tHead.constructor == Array ? tHead : new Array();
this.view = null;
}
function Table_sort (compFun, col) {
compFun = compFun || compRows;
compFun.col = col ? col : 0;
this.tBody.sort(compFun);
if (this.view)
this.view.update();
}
Table.prototype.sort = Table_sort;
function compRows (row1, row2) {
var sortCol = compRows.col;
var value1 = row1[sortCol];
var value2 = row2[sortCol];
return value1 < value2 ? -1 :
value1 == value2 ? 0 : 1;
}
function compRowsNum (row1, row2) {
var sortCol = compRowsNum.col;
var value1 = parseFloat(row1[sortCol]);
var value2 = parseFloat(row2[sortCol]);
return value1 < value2 ? -1 :
value1 == value2 ? 0 : 1;
}
function TableView (model, left, top) {
this.id = TableView.cnt;
TableView.views[TableView.cnt++] = this;
this.model = model;
this.model.view = this;
this.left = left || 0;
this.top = top || 0;
this.writeLayer();
}
function TableView_writeLayer () {
var html = '';
html += '';
html += '#tableView' + this.id + ' {';
html += ' position: absolute;';
html += ' left: ' + this.left + 'px;';
html += ' top: ' + this.top + 'px';
html += '}';
html += '';
html += '';
html += this.getHTML(this.model);
html += '';
document.write(html);
if (document.all)
this.layer = document.all['tableView' + this.id];
else if (document.layers)
this.layer = document['tableView' + this.id];
else if (document.getElementById)
this.layer = document.getElementById('tableView' + this.id);
}
TableView.prototype.writeLayer = TableView_writeLayer;
function TableView_update () {
var html = this.getHTML();
if (document.layers) {
if (!this.layer)
this.layer = document['tableView' + this.id];
this.layer.document.open();
this.layer.document.write(html);
this.layer.document.close();
}
else if (document.all)
this.layer.innerHTML = html;
else if (document.createRange) {
var r = document.createRange();
if (!this.layer)
this.layer = document.getElementById('tableView' + this.id);
while (this.layer.hasChildNodes())
this.layer.removeChild(this.layer.lastChild);
r.setStartAfter(this.layer);
var docFrag = r.createContextualFragment(html);
this.layer.appendChild(docFrag);
}
}
TableView.prototype.update = TableView_update;
function TableView_getHTML () {
var tHead = this.model.tHead;
var rows = this.model.tBody;
var html = '';
html += '';
for (var r = 0; r < tHead.length; r++) {
html += '';
for (var c = 0; c < tHead[r].length; c++) {
html += '';
for (var c = 0; c < rows[r].length; c++) {
html += '
'
html += tHead[r][c];
html += '';
}
html += '';
}
for (var r = 0; r < rows.length; r++) {
html += '
'
html += rows[r][c];
html += '';
}
html += '';
}
html += '';
return html;
}
TableView.prototype.getHTML = TableView_getHTML;
TableView.cnt = 0;
TableView.views = new Array();

var tHead = [
[
'姓名',
'课程',
'分数']];
var tBody = [['Meng', '语文', 100],
['孟子', '外语', 99],
['小孟', '数学', 300]
];
var table1 = new Table(tBody, tHead);
var table1View;

table1View = new TableView (table1, 100, 100);

xmp,blockquote {background-color:#00ccff;padding-left:20px;padding-top:10px;padding-bottom:10px;padding-right:10px}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: