这是我第二次写了,上次提交的时候出错,都丢了。然后就被派去Microsoft学习了1周,现在刚回来。咬咬牙,换个姿势,再来一次。
某天,项目经理提了个需求,要我做一个在系统后台运行的一个消息提示的功能,当有新业务单未处理的时候,就在系统主页面的右上角滚动一段提示文字的链接。
当我写完后台代码后,为了实现滚动文字,第一个方案,如下:

demo1
<div id=base style="overflow:hidden;height:100;width:100;">
<div id=show1>
白日梦白日梦白日梦白日梦白日梦白日梦白日梦白日梦
白日梦白日梦白日梦白日梦白日梦白日梦白日梦白日梦
</div>
<div id=show2></div>
</div>

<script>
var speed=50;
show2.innerHTML=show1.innerHTML;
function msg()


{
if(show2.offsetTop-base.scrollTop<=0)
base.scrollTop-=show1.offsetHeight;
else
base.scrollTop++;
}
var show=setInterval(msg,speed);

base.onmouseover=function()
{clearInterval(show)};

base.onmouseout=function()
{show=setInterval(msg,speed)};
</script>
但是发现,这个巨不好用。缺点:1、当文字过少,面积比Div_base小的时候就不滚动(不适合单条消息类的滚动,但是可以满足当内容超出容器时候的滚动的需求);2、为了实现不间断的滚动,内容被复制了1份;3、不兼容除IE外的浏览器。

demo2
<html>
<head>
<title>修改版(原文件来自赛迪网)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">

<script language=JavaScript>
var messages=new Array()
messages[0]="<a href='http://www.google.com'>白日梦之流口水</a>"
messages[1]="<a href='http://www.google.com'>白日梦之说梦话</a>"
messages[2]="<a href='http://www.google.com'>白日梦之夜梦游</a>"
messages[3]="<a href='http://www.google.com'>白日梦之鼾声不断</a>"
messages[4]="<a href='http://www.google.com'>白日梦之尿地图</a>"
messages[5]="<a href='http://www.google.com'>白日梦之惊声尖啸</a>"

var scrollerwidth=320
var scrollerheight=100
var scrollerbgcolor='#FFFFFF'
if (messages.length>1)
i=2
else
i=0

function move1(whichlayer)
{
tlayer=eval(whichlayer)

if (tlayer.top>0&&tlayer.top<=5)
{
tlayer.top=0
setTimeout("move1(tlayer)",3000)
setTimeout("move2(document.main.document.second)",3000)
return}

if (tlayer.top>=tlayer.document.height*-1)
{
tlayer.top-=5
setTimeout("move1(tlayer)",100)}

else
{
tlayer.top=scrollerheight
tlayer.document.write(messages[i])
tlayer.document.close()
if (i==messages.length-1)
i=0
else
i++}}

function move2(whichlayer)
{
tlayer2=eval(whichlayer)

if (tlayer2.top>0&&tlayer2.top<=5)
{
tlayer2.top=0
setTimeout("move2(tlayer2)",3000)
setTimeout("move1(document.main.document.first)",3000)
return}

if (tlayer2.top>=tlayer2.document.height*-1)
{
tlayer2.top-=5
setTimeout("move2(tlayer2)",100)}

else
{
tlayer2.top=scrollerheight
tlayer2.document.write(messages[i])
tlayer2.document.close()
if (i==messages.length-1)
i=0
else
i++}}

function move3(whichdiv)
{
tdiv=eval(whichdiv)

if (tdiv.style.pixelTop>0&&tdiv.style.pixelTop<=5)
{
tdiv.style.pixelTop=0
setTimeout("move3(tdiv)",3000)
setTimeout("move4(second2)",3000)
return}

if (tdiv.style.pixelTop>=tdiv.offsetHeight*-1)
{
tdiv.style.pixelTop-=5
setTimeout("move3(tdiv)",100)}

else
{
tdiv.style.pixelTop=scrollerheight
tdiv.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++}}

function move4(whichdiv)
{
tdiv2=eval(whichdiv)

if (tdiv2.style.pixelTop>0&&tdiv2.style.pixelTop<=5)
{
tdiv2.style.pixelTop=0
setTimeout("move4(tdiv2)",3000)
setTimeout("move3(first2)",3000)
return}

if (tdiv2.style.pixelTop>=tdiv2.offsetHeight*-1)
{
tdiv2.style.pixelTop-=5
setTimeout("move4(second2)",100)}

else
{
tdiv2.style.pixelTop=scrollerheight
tdiv2.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++}}

function startscroll()
{

if (document.all)
{
move3(first2)
second2.style.top=scrollerheight}

else if (document.layers)
{
move1(document.main.document.first)
document.main.document.second.top=scrollerheight+5
document.main.document.second.visibility='show'}}
window.onload=startscroll
</script>
<ilayer id="main" width=&{scrollerwidth}; height=&{scrollerheight}; bgcolor=&{scrollerbgcolor};>
<layer id="first" left=0 top=1 width=&{scrollerwidth};>

<script language="JavaScript1.2">
if (document.layers)
document.write(messages[0])
</script>
</layer>
<layer id="second" left=0 top=0 width=&{scrollerwidth}; visibility=hide>

<script language="JavaScript1.2">
if (document.layers)
document.write(messages[1])
</script>
</layer>
</ilayer>

<script language="JavaScript1.2">

if (document.all)
{
document.writeln('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hiden;background-color:'+scrollerbgcolor+'">')
document.writeln('<div style="position:absolute;width:'+scrollerwidth+';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0">')
document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">')
document.write(messages[0])
document.writeln('</div>')
document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:0">')
document.write(messages[1])
document.writeln('</div>')
document.writeln('</div>')
document.writeln('</span>')
}
</script>
</body>
</html>
demo2缺点:代码量太大,过于复杂。

demo3
<div style="width:200px;overflow:hidden">
<div style="position:relative;top:0px;left:0px;white-space:nowrap" id=news>
<span id=nbo>白日梦1白日梦2白日梦3白日梦4白日梦5白日梦6白日梦7</span>

<script language=javascript>
document.write(nbo.innerHTML);
</script>
</div>
</div>

<script language=javascript>
function newsScroll()


{
news.style.pixelLeft=(news.style.pixelLeft-1)%nbo.offsetWidth;
}
timer1=setInterval('newsScroll()',50)
</script>
demo3缺点和demo1一样。

demo4

<script language="JavaScript">
<!--

if (document.all)
{

msg="我爱你Daydream我爱你Daydream我爱你Daydream";
msgColor="0000ff";
msgFont="Verdana";

msg=msg.split('');
n=msg.length;
e=360/n;
yp=0;
xp=0;
yb=40;
xb=60;
sa=0.07;
sb=0;
pa=new Array();
pb=new Array();
for (i=0; i < n; i++)


{
document.write('<div id="msgshow" style="position:absolute;top:0;left:0;'+'height:30;width:30;font-family:'+msgFont+';text-align:center;color:'+msgColor+'">'+msg[i]+'</div>');
}

function ani()
{
yp=document.body.scrollTop+50;
xp=document.body.scrollLeft+window.document.body.clientWidth-100;

for (i=0; i < n; i++)
{
msgshow[i].style.top =yp+yb*Math.sin(sb+i*e*Math.PI/180);
msgshow[i].style.left=xp+xb*Math.cos(sb+i*e*Math.PI/180);
pb[i]=msgshow[i].style.pixelTop-yp;
pa[i]=pb[i]-pb[i]*2;

if (pa[i] < 1)
{
pa[i]=0;
msgshow[i].style.visibility='hidden';
}
else msgshow[i].style.visibility='visible';
msgshow[i].style.fontSize=pa[i]/2.7;
}
sb-=sa;
setTimeout('ani()',100);
}
window.onload=ani;
}
// -->
</script>
demo4的效果相当漂亮。 页面右上角就是这个效果。

demo5
<div class="top_t">
<marquee id="msg" direction="up" onMouseOut="this.start()" onMouseOver="this.stop()" scrollamount="1" scrolldelay="0" width="100%" height="50">
<a href="#">白日梦</a>
<br><input type="button" value="Reload" />
</marquee>
</div>
demo5,是我最后采用的方案。好处不言而喻,代码简单,功能强大,图片、按钮、表格等放到里面都可以滚动。缺点也是不支持IE以外的浏览器。
某天,项目经理提了个需求,要我做一个在系统后台运行的一个消息提示的功能,当有新业务单未处理的时候,就在系统主页面的右上角滚动一段提示文字的链接。
当我写完后台代码后,为了实现滚动文字,第一个方案,如下:
<div id=base style="overflow:hidden;height:100;width:100;">
<div id=show1>
白日梦白日梦白日梦白日梦白日梦白日梦白日梦白日梦
白日梦白日梦白日梦白日梦白日梦白日梦白日梦白日梦
</div>
<div id=show2></div>
</div>
<script>
var speed=50;
show2.innerHTML=show1.innerHTML;
function msg()

{
if(show2.offsetTop-base.scrollTop<=0)
base.scrollTop-=show1.offsetHeight;
else
base.scrollTop++;
}
var show=setInterval(msg,speed);
base.onmouseover=function()
{clearInterval(show)};
base.onmouseout=function()
{show=setInterval(msg,speed)};
</script>
<html>
<head>
<title>修改版(原文件来自赛迪网)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<script language=JavaScript>
var messages=new Array()
messages[0]="<a href='http://www.google.com'>白日梦之流口水</a>"
messages[1]="<a href='http://www.google.com'>白日梦之说梦话</a>"
messages[2]="<a href='http://www.google.com'>白日梦之夜梦游</a>"
messages[3]="<a href='http://www.google.com'>白日梦之鼾声不断</a>"
messages[4]="<a href='http://www.google.com'>白日梦之尿地图</a>"
messages[5]="<a href='http://www.google.com'>白日梦之惊声尖啸</a>"
var scrollerwidth=320
var scrollerheight=100
var scrollerbgcolor='#FFFFFF'
if (messages.length>1)
i=2
else
i=0
function move1(whichlayer)
{
tlayer=eval(whichlayer)
if (tlayer.top>0&&tlayer.top<=5)
{
tlayer.top=0
setTimeout("move1(tlayer)",3000)
setTimeout("move2(document.main.document.second)",3000)
return}
if (tlayer.top>=tlayer.document.height*-1)
{
tlayer.top-=5
setTimeout("move1(tlayer)",100)}
else
{
tlayer.top=scrollerheight
tlayer.document.write(messages[i])
tlayer.document.close()
if (i==messages.length-1)
i=0
else
i++}}
function move2(whichlayer)
{
tlayer2=eval(whichlayer)
if (tlayer2.top>0&&tlayer2.top<=5)
{
tlayer2.top=0
setTimeout("move2(tlayer2)",3000)
setTimeout("move1(document.main.document.first)",3000)
return}
if (tlayer2.top>=tlayer2.document.height*-1)
{
tlayer2.top-=5
setTimeout("move2(tlayer2)",100)}
else
{
tlayer2.top=scrollerheight
tlayer2.document.write(messages[i])
tlayer2.document.close()
if (i==messages.length-1)
i=0
else
i++}}
function move3(whichdiv)
{
tdiv=eval(whichdiv)
if (tdiv.style.pixelTop>0&&tdiv.style.pixelTop<=5)
{
tdiv.style.pixelTop=0
setTimeout("move3(tdiv)",3000)
setTimeout("move4(second2)",3000)
return}
if (tdiv.style.pixelTop>=tdiv.offsetHeight*-1)
{
tdiv.style.pixelTop-=5
setTimeout("move3(tdiv)",100)}
else
{
tdiv.style.pixelTop=scrollerheight
tdiv.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++}}
function move4(whichdiv)
{
tdiv2=eval(whichdiv)
if (tdiv2.style.pixelTop>0&&tdiv2.style.pixelTop<=5)
{
tdiv2.style.pixelTop=0
setTimeout("move4(tdiv2)",3000)
setTimeout("move3(first2)",3000)
return}
if (tdiv2.style.pixelTop>=tdiv2.offsetHeight*-1)
{
tdiv2.style.pixelTop-=5
setTimeout("move4(second2)",100)}
else
{
tdiv2.style.pixelTop=scrollerheight
tdiv2.innerHTML=messages[i]
if (i==messages.length-1)
i=0
else
i++}}
function startscroll()
{
if (document.all)
{
move3(first2)
second2.style.top=scrollerheight}
else if (document.layers)
{
move1(document.main.document.first)
document.main.document.second.top=scrollerheight+5
document.main.document.second.visibility='show'}}
window.onload=startscroll
</script>
<ilayer id="main" width=&{scrollerwidth}; height=&{scrollerheight}; bgcolor=&{scrollerbgcolor};>
<layer id="first" left=0 top=1 width=&{scrollerwidth};> 
<script language="JavaScript1.2">
if (document.layers)
document.write(messages[0])
</script>
</layer>
<layer id="second" left=0 top=0 width=&{scrollerwidth}; visibility=hide> 
<script language="JavaScript1.2">
if (document.layers)
document.write(messages[1])
</script>
</layer>
</ilayer>
<script language="JavaScript1.2">

if (document.all)
{
document.writeln('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hiden;background-color:'+scrollerbgcolor+'">')
document.writeln('<div style="position:absolute;width:'+scrollerwidth+';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0">')
document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">')
document.write(messages[0])
document.writeln('</div>')
document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:0">')
document.write(messages[1])
document.writeln('</div>')
document.writeln('</div>')
document.writeln('</span>')
}
</script>
</body>
</html>
<div style="width:200px;overflow:hidden">
<div style="position:relative;top:0px;left:0px;white-space:nowrap" id=news>
<span id=nbo>白日梦1白日梦2白日梦3白日梦4白日梦5白日梦6白日梦7</span>
<script language=javascript>
document.write(nbo.innerHTML);
</script>
</div>
</div>
<script language=javascript>
function newsScroll()

{
news.style.pixelLeft=(news.style.pixelLeft-1)%nbo.offsetWidth;
}
timer1=setInterval('newsScroll()',50)
</script>
<script language="JavaScript">
<!-- 
if (document.all)
{
msg="我爱你Daydream我爱你Daydream我爱你Daydream";
msgColor="0000ff";
msgFont="Verdana";
msg=msg.split('');
n=msg.length;
e=360/n;
yp=0;
xp=0;
yb=40;
xb=60;
sa=0.07;
sb=0;
pa=new Array();
pb=new Array();
for (i=0; i < n; i++)

{
document.write('<div id="msgshow" style="position:absolute;top:0;left:0;'+'height:30;width:30;font-family:'+msgFont+';text-align:center;color:'+msgColor+'">'+msg[i]+'</div>');
}
function ani()
{
yp=document.body.scrollTop+50;
xp=document.body.scrollLeft+window.document.body.clientWidth-100;
for (i=0; i < n; i++)
{
msgshow[i].style.top =yp+yb*Math.sin(sb+i*e*Math.PI/180);
msgshow[i].style.left=xp+xb*Math.cos(sb+i*e*Math.PI/180);
pb[i]=msgshow[i].style.pixelTop-yp;
pa[i]=pb[i]-pb[i]*2;
if (pa[i] < 1)
{
pa[i]=0;
msgshow[i].style.visibility='hidden';
}
else msgshow[i].style.visibility='visible';
msgshow[i].style.fontSize=pa[i]/2.7;
}
sb-=sa;
setTimeout('ani()',100);
}
window.onload=ani;
}
// -->
</script>
<div class="top_t">
<marquee id="msg" direction="up" onMouseOut="this.start()" onMouseOver="this.stop()" scrollamount="1" scrolldelay="0" width="100%" height="50">
<a href="#">白日梦</a>
<br><input type="button" value="Reload" />
</marquee>
</div>

浙公网安备 33010602011771号