function Scrollbar() {
this.options = {
total : 0, //データ総数
pos : 0, //現在のスクロール位置
itemSize : 20, / /単品サイズ
size : 200 //コントロールサイズ
}
}
Scrollbar.prototype = (function () {
function setOptions(options) {
for (varオプションの attr) {
this.options[attr] = options[attr];
}
Refresh(this);
function Refresh(_this) {
if ( !_this.created)
return; //コントロールの高さを設定します
_this.bar.style.height = _this.options.size "px";
//コンテンツの高さを設定します
var ch = _this.options.total * _this.options.itemSize;
_this.content.style.height = ch "px";
}
//スクロール位置を取得する
function getPos() {
var top = this.bar.scrollTop;
var pos = parseInt(top / this.options.itemSize);
return pos;各ページに表示されます
function getPageItems() {
return this.options.size / this.options.itemSize;
}
//スクロール イベント レスポンス
function OnScroll(_this) {
var pos = _this.getPos();
if (pos == _this.options.pos)
return;
_this.options.pos = pos; );
}
// スクロールバーの作成
function CreateAt(dom) {
var _this = this;
var bar = document.createElement("div"); content = document.createElement("div");
bar.appendChild(content);
bar.style.overflowY = "scroll"; bar.style.overflowX = "hidden";
if (bar.attachEvent) {
bar.attachEvent("onscroll", function () {
OnScroll(_this);
}); 🎜>} else {
//firefox 互換
bar.addEventListener("scroll", function () {
OnScroll(_this);
},
content.style.backgroundColor = "white";
content .style.width = "1px";
this.content = content; == "string") {
dom = document.getElementById(dom);
dom.innerHTML = "";
dom.appendChild(this.bar);
Refresh(this);
}
return {
setOptions : setOptions,
CreateAt : CreateAt,
getPos : getPos,
getPageItems :
onScroll : null
//スクロールバーイベントをシミュレートします
})();
ページコード:
コードをコピーします
コードは次のとおりです:
;/title>
スクリプト言語="javascript" type="text/ javascript">
var data = [];
//サンプル データを 10,000 個作成します
for (var i = 0; i var row = {
id: i,
text: "text" i
};
data.push(row)
}
//スクロールバーを作成します
var scrbar = 新しいスクロールバー();
window.onload = function() {
scrbar.CreateAt("divScroll");
scrbar.setOptions({
合計: 10000,
サイズ: 300
});
scrbar.onScroll = function(pos) {
ShowData(pos)
}
//テンプレートの取得
var items = scrbar.getPageItems(); tpl = document.getElementById("trTpl");
tpl.parentNode.removeChild(tpl);
//表示される数十行のテーブルを作成するだけなので、当然より高速になります
var list = document.getElementById("tblList");
for (var i = 0; i var nr = tpl.cloneNode(true); > // テンプレート rows
list.appendChild(nr);
ShowData(scrbar.getPos()) からコピーします
}
// スクロールに従ってデータを表示しますbar
function ShowData(pos) {
var n = scrbar.getPageItems();
var rows = document.getElementById("tblList").rows;
for (var i = 0; i < n; i ) {
var row = rows[i];
row.cells["tdID"].innerHTML = item["id"] ;
row.cells["tdText"].innerHTML = item["text"]
}
}
< ;body>