<div class="codetitle"> <span><a style="CURSOR: pointer" data="79304" class="copybut" id="copybut79304" onclick="doCopy('code79304')"><u>复制代码</u></a></span> 代码如下:</div> <div class="codebody" id="code79304"> <br> <br> <br> <br><script type="text/javascript"><!-- <BR>//主要的滚动函数 <BR>//如果滚动的效果正好是需要的效果 <BR>//那么你只需要直接调用这个函数即可 <BR>var moveTag=function(obj){ <BR>var _this = this; <BR>_this.speed = 10;//移动的速度 <BR>_this.space = 10 * _this.speed;//移动间隔的时间 <BR>obj.scrollLeft=0;//初始化滚动的位置(主要是考虑到需要兼容FF) <BR>var divList = obj.getElementsByTagName("DIV"); <BR>var obj2 = new Object();//包含所有滚动列的div <BR>for(var i=0;i<divList.length;i++){ <BR>if(divList[i].parentNode==obj){ <BR>obj2=divList[i]; <BR>break; <BR>} <BR>} <BR>//得到需要滚动的所有列 <BR>//divList循环两次的目的是为了不让样式名称影响滚动代码 <BR>//也就是尽可能的减少滚动代码与样式名称的耦合 <BR>var cellCount = 0; <BR>_this.cellList = new Array(); <BR>for(var i=0;i<divList.length;i++){ <BR>if(divList[i].parentNode==obj2){ <BR>cellCount++; <BR>_this.cellList.push(divList[i]);//需要滚动的所有列 <BR>} <BR>} <BR>_this.resetCellList=function(){ <BR>//这个函数主要是为了让滚动不间断 <BR>//在每次滚动到终点的时候需要使用 <BR>//将已经滚动过的列移到当前列之后 <BR>for(var i=0;i<_this.cellList.length-1;i++){ <BR>obj2.removeChild(_this.cellList[i]); <BR>obj2.appendChild(_this.cellList[i]); <BR>} <BR>//重新获取_this.cellList <BR>_this.cellList = new Array(); <BR>for(var i=0;i<divList.length;i++){ <BR>if(divList[i].parentNode==obj2) _this.cellList.push(divList[i]); <BR>} <BR>//alert(_this.cellList.length); <BR>} <BR>_this.resetForMoveRight=function(){ <BR>//这个函数主要是为了让滚动不间断 <BR>//与resetCellList的区别是这个函数是为了向右不间断滚动使用的 <BR>//在每次滚动到起点的时候需要使用 <BR>//将当前列之后的所有列移动到当前列之前 <BR>if(_this.cellList.length>0){ <BR>for(var i=_this.cellList.length-1;i>0;i--){ <BR>obj2.removeChild(_this.cellList[i]); <BR>obj2.insertBefore(_this.cellList[i],obj2.childNodes[0]); <BR>} <BR>} <BR>//重新获取_this.cellList <BR>_this.cellList = new Array(); <BR>for(var i=0;i<divList.length;i++){ <BR>if(divList[i].parentNode==obj2) _this.cellList.push(divList[i]); <BR>} <BR>//alert(_this.cellList.length); <BR>} <BR>//alert(_this.cellList.length); <BR>obj2.style.width = parseInt(obj.offsetWidth * cellCount) + "px"; <BR>// <BR>//alert(_this.endScroll); <BR>var cellScroll = obj.offsetWidth;//每次滚动需要滚动多少距离 <BR>var endScroll = obj2.offsetWidth - cellScroll;//计算滚动条的终点位置 <BR>//alert(_this.cellScroll); <BR>// <BR>_this.moveLength = cellScroll;//初始化移动偏量,为0的时候,在页面加载完毕之后将会立即移动;等于_this.cellScroll表示延迟一会再开始执行 <BR>_this.scrollEnd = false; <BR>_this.scrollTimes = 0; <BR>//休息一会儿 <BR>_this.sleep=function(){ <BR>_this.scrollTimes++; <BR>if(_this.scrollTimes>=_this.space){ <BR>_this.scrollTimes=0; <BR>_this.moveLength=0; <BR>} <BR>}; <BR>_this.moveStart = true;//是否开始移动 <BR>_this.isMoveLeft = true;//是否向左移动 <BR>_this.move=function(){ <BR>obj.onmouseover=function(){ <BR>_this.moveStart=false; <BR>}; <BR>obj.onmouseout=function(){ <BR>_this.moveStart=true; <BR>}; <BR>//重新设定cellList <BR>if(obj.scrollLeft>=endScroll && _this.isMoveLeft){//向左移动,并且已经移动到尽头 <BR>if(_this.moveLength > 0) _this.moveLength = cellScroll;//调整 <BR>if(_this.cellList.length>0){ <BR>_this.resetCellList();//更新cellList <BR>obj.scrollLeft=0; <BR>}else{ <BR>_this.scrollEnd = true; <BR>} <BR>}else if(obj.scrollLeft<=0 && !_this.isMoveLeft){//向右移动,并且已经移动到尽头 <BR>if(_this.moveLength > 0) _this.moveLength = cellScroll;//调整 <BR>if(_this.cellList.length>0){ <BR>_this.resetForMoveRight();//更新cellList <BR>obj.scrollLeft=endScroll; <BR>}else{ <BR>_this.scrollEnd = false; <BR>} <BR>} <BR>// <BR>if(_this.scrollEnd){//向左移动 <BR>if(_this.moveLength<cellScroll && _this.moveStart){ <BR>obj.scrollLeft--; <BR>_this.moveLength++; <BR>}else if(_this.moveLength>=cellScroll){ <BR>_this.sleep(); <BR>} <BR>} <BR>else{//向右移动 <BR>if(_this.moveLength<cellScroll && _this.moveStart){ <BR>obj.scrollLeft++; <BR>_this.moveLength++; <BR>}else if(_this.moveLength>=cellScroll){ <BR>_this.sleep(); <BR>} <BR>} <BR>}; <BR>//自动 <BR>_this.start=function(){ <BR>setInterval(_this.move,_this.speed); <BR>}; <BR>//右移动 <BR>_this.moveRight=function(){ <BR>_this.scrollEnd = true;//已经滚动到尽头 <BR>_this.isMoveLeft = false;//向右滚动 <BR>_this.scrollTimes=0; <BR>}; <BR>//左移动 <BR>_this.moveLeft=function(){ <BR>_this.scrollEnd = false;//没有滚动到尽头 <BR>_this.isMoveLeft = true;//向左滚动 <BR>_this.scrollTimes=0; <BR>}; <BR>}; <BR>// --></script> <br><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br><style><!-- <BR>#list{border:#ccc 1px solid;} <BR>#list div div{line-height:30px;text-align:center;border-right:#ccc 1px solid;} <BR>#list{width:150px;height:30px;overflow:hidden;}/*蹇</style> </div>