首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  HTML/JS/CSS技术专区 » [提问]javascript函数  


  作者:slopesun
  注册时间:2004-09-07
  主题/回复:58/67
  积分:753
  等级:★★★(六级)
  称号:声名鹊起

  ken.wang@esolux...
  185627321
  www.

 

 发表:2004-11-14 02:59:32 阅读 2348 次 回复 2 次 得分2  |   字号 字色
[提问]javascript函数
<html>
<head>
<script Language="JavaScript">
var msg="this is a JavaScript test";
var seq=0;
function Scroll() { 
len = msg.length;
window.status = msg.substring(0, seq+1);
seq++;
window.setTimeout("Scroll();", 100 );

Scroll();
</script>
<body>
</body>
</html>
当页面打开,Scroll()执行到seq++;。seq的值为1。
接着执行window.setTimeout("Scroll();", 100 );这句的意思应该是100毫秒后关闭Scroll()这个函数吧?如果是这样那么任务拦里应该只有t这一个字符啊。但是事实上并非如此。那么window.setTimeout("Scroll();", 100 );这句该怎么理解?
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2004-11-15 01:23:13  评分:1 

是谁告诉你,window.setTimeout("Scroll();", 100 );是关闭函数呢???
这句话的意思是,100毫秒之后再次执行Scroll()函数。
函数第一次执行,在状态栏输出一个t,第二次执行,输出 th,直到this is a JavaScript test全部输出。
整个程序的作用就是在状态栏动态输出一行文字。

当然,这个函数有点问题,这个程序是一个无穷递归程序,一旦执行,除非关闭浏览器,否则程序一直执行,一直占用一定资源。原因是输出字符串之后,仍然每隔100毫秒输出一次全部字符串(因为使用的substring(0, seq+1)这时候成了substring(0,xx)其中xx>=10)


要想使整个程序更加合理,可以在seq++; 下面加上这一行:

  if(seq>len){
   seq=0;
  }
这样,每次动态输出完整行文字之后,再从头输出一遍。如此循环。如果希望文字动态显示一遍就停止,退出函数执行,可以在seq++; 之后这么改:

  if(seq<=len){
   window.setTimeout("Scroll();", 100 );
   }
这样就ok了。文字显示完之后,不会再继续无限期运行函数,占用系统资源。
 2#楼  
 
  回复人:Miyahoo
  注册时间:2004-04-04
  主题/回复:39/255
  积分:1210
  等级:★★★☆(七级)
  称号:论坛贤士

   
 2#楼 发表于2004-11-15 07:29:35  评分:1 

哈哈,小舟的js精进不少啊~
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.004sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版