日期:2014-05-18  浏览次数:20654 次

初学者的一个小问题javascript的
<script   type= "text/javascript ">
<!--
var   Message   =   "^_^欢迎光临我们的网站 ";
var   spacenum   =   50;
FlyIn(spacenum,0)
function   FlyIn(num,now)
{
var   out   =   " ";
for(var   i=0;i <now;i++)
{
out   +=   Message.charAt(i);
}
for(var   i=1;i <num;i++)
{
out   +=   " ";
}
out   +=   Message.charAt(now);
window.status   =   out;
if(num   <=   1)
{
now++;
if(Message.charAt(now)   ==   " ")
{
now++;
}
num   =   spacenum   -   now;
}
else
{
num--;
}
if(now   !=   Message.length   +   1)   //为什么这里加1才可以正常运行
{
var   cmd   =   "FlyIn( "+   num   + ", "+   now   + ") ";
window.setTimeout(cmd,20);
}
else
{
window.status   =   " ";
num   =   0;
now   =   0;
var   cmd   =   "FlyIn( "+   num   + ", "+   now   + ") ";
window.setTimeout(cmd,20);  
}
}
//-->
</script>

------解决方案--------------------
大体上看了一下,好像是一个动态的显示状态栏的一个效果,就是(20/1000)s来从无到有在状态栏显示[^_^欢迎光临我们的网站]这个信息,其实你可以看到now是永远小于等于message.length的,之所以!=Message.length + 1其实就是 <= Message.length.就是说显示的状态还没有完(Message完全显示),则继续在num 和 now 的基础上动态显示剩下的信息.当now等于Message.length + 1 的时候证明显示完了,从头再来