<
html
><
head
>
< meta http - equiv = 'Content - Type' content = 'text / html; charset = gb2312' >
< script language = 'JavaScript' >
var scrollerheight = 160 ; // 定义每个区域显示的高度
var html,total_area = 0 ,wait_flag = true ; // 初始化html串,总显示区域数,是否等待.
var bMouseOver = 1 ; // 鼠标放上去就不滚动了,这里硬编码为true
var scrollspeed = 5 ; // 滚动速度,其实是每次向上移动的象素数,值越大看起来越快
var waitingtime = 5000 ; // 每次翻动的等待时间,单位毫秒
var s_tmp = 0 // 初始移动次数
var s_amount = 32 ; // 它的值是由每次需要移动的象素除以scrollspeed换算出来的
var scroll_content = new Array(); // 声明一个数组
var startPanel = 0 , n_panel = 0 , i = 0 ; // 声明初始区域,区域个数和循环变量
// ********************************************
// 这是我做的一个跟踪变量函数
// 在需要使用跟踪变量的地方直接调用trace()函数就可以了.
var newwin;
var isDebug = 1 ;
function trace(s)
{
if(isDebug)
{
try
{
newwin.document.write(s + "
");
}
catch(e)
{
newwin = window.open("","trace");
newwin.document.write(s + "
");
}
}
}
// **********************************************
// 初始化滚动函数
function startscroll() {
//随机获取初始区域
//startPanel是0到scroll_content下标的任意数
i=0;
for(i in scroll_content)n_panel++;
n_panel = n_panel -1;
startPanel = Math.round(Math.random()*n_panel);
//如果初始区域是第一个元素,
//调用insert_area把scroll_content里所有元素都装到DIV里
if(startPanel == 0)
{
i=0;
for(i in scroll_content)
insert_area(total_area, total_area++);
}
else
//如果初始区域是最后一个元素
//先把最后一个装进DIV,然后依次把其它元素装进DIY
if(startPanel == n_panel) //如果是最后一个元素
{
insert_area(startPanel, total_area);
total_area++;
for(i=0; i<startPanel; i++)
{
insert_area(i,total_area);
total_area++;
}
}
else
//如果初始区域不是第一个,也不是最后一个
//先把当前区域装进DIV,
//然后再把当前区域之前和之后的区域装进DIV
if((startPanel > 0) || (startPanel < n_panel))
{
insert_area(startPanel,total_area);
total_area++;
for(i=startPanel+1; i<=n_panel; i++)
{
insert_area(i,total_area);
total_area++;
}
for(i=0; i<startPanel; i++)
{
insert_area(i,total_area);
total_area++;
}
}
//每隔waitingtime的时间调用一次scrolling()函数
window.setTimeout('scrolling()',waitingtime);
}
// 滚动函数
function scrolling()
{
//判断鼠标是否放上去,并且是否在等待
if(bMouseOver && wait_flag)
{
trace("----------------------------");
for(i=0;i<total_area;i++)
{
//每次所有区域同意向上移动scrollspeed个象素
tmp = document.getElementById('scroll_area'+i).style;
tmp.top = parseInt(tmp.top) - scrollspeed;
if(i==0)trace("第一个区域的顶部"+parseInt(tmp.top));
//如果从屏幕种移出1个区域的话,被移出的区域从底部出现
if (parseInt(tmp.top) <= -scrollerheight)
{
tmp.top = scrollerheight*(total_area-1);
}
trace("移动次数:"+s_tmp);
//s_tmp是向上移动的次数,按理说应该移动到正好要移动的象素就该停止了
//因为一次向上移动scrollspeed个象素,本例子中一次翻动要移动的象素就是scrollerheight
//当然你也可以一次翻动两个scrollerheight
//所以要移动scrollerheight/scrollspeed次,s_amount就是这样算出来的.
//因为s_tmp是从0初始化的,所以减去1后才是真正一次翻动要移动的次数
//但是呢,因为执行一次scrolling()函数,s_tmp就会增加scroll_content.length多次,
//所以移动的次数应当是(s_amount-1)*scroll_content.length),
//当翻动次数大于我们算出来的值的时候就要停止,也就是把向上移动的必要条件去调
//这从跟踪变量的输出可以看出来
if(s_tmp++ > (s_amount-1)*scroll_content.length)
{
trace("(s_amount-1)*scroll_content.length="+(s_amount-1)*scroll_content.length)
wait_flag=false;//进入等待
//等待waitingtime,再消除等待,并且吧s_tmp归零.
window.setTimeout('wait_flag=true;s_tmp=0;',waitingtime);
}
}
}
//设置1秒钟执行1000次本函数
window.setTimeout('scrolling()',1);
}
function insert_area(idx, n)
{
html='<div style="left: 0px; width: 100%; position: absolute; top: '+(scrollerheight*n)+'px" id="scroll_area'+n+'">';
html+=scroll_content[idx]+'';html+='div>';document.write(html);
}
// 下面的部分可以由asp循环生成
scroll_content[ 0 ] = ' < table height = 140 align = center border = 0 width = 300 id = 0 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572695027151.gif width=307 height=140 border=0>';
scroll_content[ 1 ] = ' < table height = 140 align = center border = 0 width = 300 id = 1 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572694642351.jpg width=307 height=140 border=0>';
scroll_content[ 2 ] = ' < table height = 140 align = center border = 0 width = 300 id = 2 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572694652122.jpg width=307 height=140 border=0>';
startscroll(); script >
< meta http - equiv = 'Content - Type' content = 'text / html; charset = gb2312' >
< script language = 'JavaScript' >
var scrollerheight = 160 ; // 定义每个区域显示的高度
var html,total_area = 0 ,wait_flag = true ; // 初始化html串,总显示区域数,是否等待.
var bMouseOver = 1 ; // 鼠标放上去就不滚动了,这里硬编码为true
var scrollspeed = 5 ; // 滚动速度,其实是每次向上移动的象素数,值越大看起来越快
var waitingtime = 5000 ; // 每次翻动的等待时间,单位毫秒
var s_tmp = 0 // 初始移动次数
var s_amount = 32 ; // 它的值是由每次需要移动的象素除以scrollspeed换算出来的
var scroll_content = new Array(); // 声明一个数组
var startPanel = 0 , n_panel = 0 , i = 0 ; // 声明初始区域,区域个数和循环变量
// ********************************************
// 这是我做的一个跟踪变量函数
// 在需要使用跟踪变量的地方直接调用trace()函数就可以了.
var newwin;
var isDebug = 1 ;
function trace(s)
{
if(isDebug)
{
try
{
newwin.document.write(s + "
");
}
catch(e)
{
newwin = window.open("","trace");
newwin.document.write(s + "
");
}
}
}
// **********************************************
// 初始化滚动函数
function startscroll() {
//随机获取初始区域
//startPanel是0到scroll_content下标的任意数
i=0;
for(i in scroll_content)n_panel++;
n_panel = n_panel -1;
startPanel = Math.round(Math.random()*n_panel);
//如果初始区域是第一个元素,
//调用insert_area把scroll_content里所有元素都装到DIV里
if(startPanel == 0)
{
i=0;
for(i in scroll_content)
insert_area(total_area, total_area++);
}
else
//如果初始区域是最后一个元素
//先把最后一个装进DIV,然后依次把其它元素装进DIY
if(startPanel == n_panel) //如果是最后一个元素
{
insert_area(startPanel, total_area);
total_area++;
for(i=0; i<startPanel; i++)
{
insert_area(i,total_area);
total_area++;
}
}
else
//如果初始区域不是第一个,也不是最后一个
//先把当前区域装进DIV,
//然后再把当前区域之前和之后的区域装进DIV
if((startPanel > 0) || (startPanel < n_panel))
{
insert_area(startPanel,total_area);
total_area++;
for(i=startPanel+1; i<=n_panel; i++)
{
insert_area(i,total_area);
total_area++;
}
for(i=0; i<startPanel; i++)
{
insert_area(i,total_area);
total_area++;
}
}
//每隔waitingtime的时间调用一次scrolling()函数
window.setTimeout('scrolling()',waitingtime);
}
// 滚动函数
function scrolling()
{
//判断鼠标是否放上去,并且是否在等待
if(bMouseOver && wait_flag)
{
trace("----------------------------");
for(i=0;i<total_area;i++)
{
//每次所有区域同意向上移动scrollspeed个象素
tmp = document.getElementById('scroll_area'+i).style;
tmp.top = parseInt(tmp.top) - scrollspeed;
if(i==0)trace("第一个区域的顶部"+parseInt(tmp.top));
//如果从屏幕种移出1个区域的话,被移出的区域从底部出现
if (parseInt(tmp.top) <= -scrollerheight)
{
tmp.top = scrollerheight*(total_area-1);
}
trace("移动次数:"+s_tmp);
//s_tmp是向上移动的次数,按理说应该移动到正好要移动的象素就该停止了
//因为一次向上移动scrollspeed个象素,本例子中一次翻动要移动的象素就是scrollerheight
//当然你也可以一次翻动两个scrollerheight
//所以要移动scrollerheight/scrollspeed次,s_amount就是这样算出来的.
//因为s_tmp是从0初始化的,所以减去1后才是真正一次翻动要移动的次数
//但是呢,因为执行一次scrolling()函数,s_tmp就会增加scroll_content.length多次,
//所以移动的次数应当是(s_amount-1)*scroll_content.length),
//当翻动次数大于我们算出来的值的时候就要停止,也就是把向上移动的必要条件去调
//这从跟踪变量的输出可以看出来
if(s_tmp++ > (s_amount-1)*scroll_content.length)
{
trace("(s_amount-1)*scroll_content.length="+(s_amount-1)*scroll_content.length)
wait_flag=false;//进入等待
//等待waitingtime,再消除等待,并且吧s_tmp归零.
window.setTimeout('wait_flag=true;s_tmp=0;',waitingtime);
}
}
}
//设置1秒钟执行1000次本函数
window.setTimeout('scrolling()',1);
}
function insert_area(idx, n)
{
html='<div style="left: 0px; width: 100%; position: absolute; top: '+(scrollerheight*n)+'px" id="scroll_area'+n+'">';
html+=scroll_content[idx]+'';html+='div>';document.write(html);
}
// 下面的部分可以由asp循环生成
scroll_content[ 0 ] = ' < table height = 140 align = center border = 0 width = 300 id = 0 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572695027151.gif width=307 height=140 border=0>';
scroll_content[ 1 ] = ' < table height = 140 align = center border = 0 width = 300 id = 1 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572694642351.jpg width=307 height=140 border=0>';
scroll_content[ 2 ] = ' < table height = 140 align = center border = 0 width = 300 id = 2 >< tr >< td >< a href = # target = _blank >< IMG SRC = http: // onlytiancai/bak/77love/UploadAdPic/200572694652122.jpg width=307 height=140 border=0>';
startscroll(); script >
From: http://onlytiancai.cnblogs.com/archive/2005/07/27/201013.html