注: 在日文系统编写,所以用了我这乱七八糟的英文注释。Sorry! JS文件: //*********************************************************************************** // JavaScript HTML DIV scroll bar controler // // by mostone@hotmail.com 2005.06.15 // // useage: // create DIV scrollbar // scroll directions: scroll up/ down/ left/ right // setp 1: // in HTML document, add a div tag and give "id" attribute // setp 2: // include this file into your HTML and etc document // use "<script>" tag include src attribute // setp 3: // write your script // exmple: // var scrollBarControl = new scrollBar(); // scrollBarControl.addBar("myBarID", 100, 100, 50, "down"); // scrollBarcontrol.createScrollBars(); // finally: // save your HTML document and test it. // //---------------------------------------------------------------------------------- // method: // scrollBar() // scrollBarControl class constrction // without parameters // addBar(barID, width, height, interval, direction) // add user bar define // parameters: // barID (Required) String <DIV ID="xxx"> the id tag // width (Optional) Integer that specifies the bar's width // height (Optional) Integer that specifies the bar's height // interval (Optional) Integer that specifies the number of milliseconds. // direction (Optional) String that specifies the scroll direction // //*********************************************************************************** var __scrollBarControl = null; function innerBarProp(barID, width, height, interval, direction) { this.barID = barID; this.width = width; this.height = height; this.interval = interval; this.direction = direction; this.stopScroll = false; this.maxValue = 0; this.preValue = 0; } function scrollBar() { this.barsArray = new Array(); //save current object __scrollBarControl = this; } ////////////////////////////////////////////////////////////////// // add scrollbar to bar list and set properties // parameters: // barID: HTML's tag <DIV>'s id property // (for js access the DIV object) // width: define the scrollbar's width // height: define the scrollbar's height // interval: define the scroll speed // ( scroll up/down per XX millinSecond ) // direction: scroll direction's defined // "up" // "down" // "left" // "right" ////////////////////////////////////////////////////////////////// scrollBar.prototype.addBar = function(barID, width, height, interval, direction) { //check parameters var paraCount = arguments.length; if ( paraCount < 1 ) { alert("parameters count incorect!"); return; //throw "parameters count inccorect!"; } //width's default value if ( typeof( width ) == "undefined" ) { var width = 100; } //height's default value if ( typeof( height ) == "undefined" ) { var height = 100; } //interval's default value if ( typeof( interval ) == "undefined" ) { var interval = 1000; } //direction's default value if ( typeof( direction ) == "undefined" ) { var direction = "up"; } //create scrollbar's inner properties var barProp = new innerBarProp(barID, width, height, interval, direction); var barCount = this.barsArray.length; this.barsArray[barCount] = barProp; } scrollBar.prototype.createScrollBars = function() { //get bar's count var barCount = this.barsArray.length; //if no bar add to scrollControl do nothing if ( barCount == 0 ) { return; } //init scroll bars for ( var i=0; i<barCount; i++ ) { var objBarID = this.barsArray[i].barID; //if typeof objBarID is object // that's meaning it inited //if typeof objBarID is string // init that scroll bar if ( typeof( objBarID ) == "string" ) { //get scroll <DIV> object var objBar = document.getElementById( objBarID ); if (objBar == null) { //objBarID is not exist if ( document.readyState == "complete" || document.readyState == "loaded" ) { //the objBarID not exists in current document //throw "the objBarID is not exists."; alert("ScrollBar[" + objBarID + "]: not exist!"); return; } else { //wait for document to load objBarID window.setTimeout("__scrollBarControl.createScrollBars()",50); //exit processing.......... //and wait next time callbak return; } } //update barID this.barsArray[i].barID = objBar; } } for ( var i=0; i<barCount; i++ ) { this.innerInitBar(i); } } scrollBar.prototype.innerInitBar = function (index) { //get properties var barID = this.barsArray[index].barID; var width = this.barsArray[index].width; var height = this.barsArray[index].height; var interval = this.barsArray[index].interval; var direction = this.barsArray[index].direction; var maxValue = 0; //set scrollBar's properties with(barID) { style.width = width; style.height = height; noWrap=true; switch( direction ) { case "up": maxValue = Math.max(scrollHeight, height); style.overflowX = "visible"; style.overflowY = "hidden"; var barHtml = innerHTML; var newHtml = "<table border='0' cellspacing='0' cellpadding='0'>\n"; newHtml += " <tr>\n"; newHtml += " <td height='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += " <tr>\n"; newHtml += " <td height='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += "</table>\n"; innerHTML = newHtml; break; case "down": maxValue = Math.max(scrollHeight, height); style.overflowX = "visible"; style.overflowY = "hidden"; var barHtml = innerHTML; var newHtml = "<table border='0' cellspacing='0' cellpadding='0'>\n"; newHtml += " <tr>\n"; newHtml += " <td height='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += " <tr>\n"; newHtml += " <td height='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += "</table>\n"; innerHTML = newHtml; scrollTop = maxValue; break; case "left": maxValue = Math.max(scrollWidth, width); style.overflowX = "hidden"; style.overflowY = "visible"; var barHtml = barID.innerHTML; var newHtml = "<table border='0' cellspacing='0' cellpadding='0' width='" + (maxValue * 2 ) + "'>\n"; newHtml += " <tr>\n"; newHtml += " <td width='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " <td width='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += "</table>\n"; innerHTML = newHtml; break; case "right": maxValue = Math.max(scrollWidth, width); style.overflowX = "hidden"; style.overflowY = "visible"; var barHtml = innerHTML; var newHtml = "<table border='0' cellspacing='0' cellpadding='0' width='" + (maxValue * 2 ) + "'>\n"; newHtml += " <tr>\n"; newHtml += " <td width='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " <td width='" + maxValue + "' valign='top'>\n"; newHtml += barHtml + "\n"; newHtml += " </td>\n"; newHtml += " </tr>\n"; newHtml += "</table>\n"; innerHTML = newHtml; scrollLeft = maxValue; break; default: //throw "direction is inccorect!"; alert("ScrollBar[" + id + "]: direction is incorect!"); return; } //set mouse events onmouseover = new Function("__scrollBarControl.mouseEvt(" + index + ",true);"); onmouseout = new Function("__scrollBarControl.mouseEvt(" + index + ",false);"); window.setInterval("__scrollBarControl.scroll(" + index + ");",interval); //save maxValue this.barsArray[index].maxValue = maxValue; } } scrollBar.prototype.mouseEvt = function(index, stop) { this.barsArray[index].stopScroll = stop; } scrollBar.prototype.scroll = function(index) { //get properties var barID = this.barsArray[index].barID; var width = this.barsArray[index].width; var height = this.barsArray[index].height; var interval = this.barsArray[index].interval; var direction = this.barsArray[index].direction; var stopScroll = this.barsArray[index].stopScroll; var preValue = this.barsArray[index].preValue; var maxValue = this.barsArray[index].maxValue; if ( stopScroll == true ) return; switch(direction) { case "up": preValue++; if ( preValue >= maxValue ) { preValue = 0; } barID.scrollTop = preValue; break; case "down": preValue--; if ( preValue <= 0 ) { preValue = maxValue; } barID.scrollTop = preValue; break; case "left": preValue++; if ( preValue >= maxValue ) { preValue = 0; } barID.scrollLeft = preValue; break; case "right": preValue--; if ( preValue <=0 ) { preValue = maxValue; } barID.scrollLeft = preValue; break; } this.barsArray[index].preValue = preValue; } //=================end of file===========================
|