| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:高手帮下忙,看看这段代码···
只看楼主 加入收藏
ztslove
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-5-27
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:7 
高手帮下忙,看看这段代码···
各位Javascript友们 帮帮我给 这段代码   加上注释 看不大懂啊   谢谢各位了···刚来到这里分不多  谅解啊  谢谢 ····
<body bgcolor="#fef4d9" OnLoad="stack()">
<SCRIPT LANGUAGE="JavaScript">
<!-- hide script from old browsers
var phrase = "精彩javascript特效!!!";
var lenPhrase = phrase.length; //获取字符串的长度
var phraseOut = "";
var pause = 25;//间隙 速度
var i=0;
var j=0;
var animateWidth = 20;//设置滚动宽度
var position=animateWidth;
function stack() {
    if (phrase.charAt(i) != " ") {
      phraseOut = "";
      for (j=0; j<i; j++) {
        phraseOut += phrase.charAt(j);
      }
      for (j=i; j<position; j++) {
        phraseOut += " ";
      }
      phraseOut += phrase.charAt(i);
      for (j=position; j<animateWidth; j++) {
        phraseOut += " ";
      }
      window.status = phraseOut;
      if (position == i) {
        animateWidth++;
        position = animateWidth;
        i++;
      }
      else {
        position--;
      }
    }
    else {
      i++
    }
    if (i<lenPhrase) {
        setTimeout("stack()",pause);
    }
}
// end hiding contents -->
</SCRIPT>
</body>
搜索更多相关主题的帖子: 代码 
2010-05-27 22:43
ztslove
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-5-27
收藏
得分:0 
大家  帮个忙啊  谢谢了 ···
2010-05-28 09:34
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:10 
程序代码:
<body bgcolor="#fef4d9" OnLoad="stack()">
<SCRIPT LANGUAGE="JavaScript">
<!-- hide script from old browsers
var phrase = "精彩javascript特效!!!";//定义变量phrase,并把字符串"精彩javascript特效!!!"赋给phrase,以后直接引用phrase即可表示那个字符串!
var lenPhrase = phrase.length; //获取变量phrase所引用的字符串的长度
var phraseOut = "";//定义变量phraseOut,赋予空字符
var pause = 25;//间隙速度
var i=0;//定义变量i,初始值为0
var j=0;//定义变量j,初始值为0
var animateWidth = 20;//定义变量animateWidth,初值为20,设置滚动宽度
var position=animateWidth;//定义变量position,初始值为20,也就是上面定义的那个变量值.
function stack() {//定义javascript函数,名为stack,然后在最上面body里以onload事件载入执行,也就是在页面加载完成后才执行函数stack!
    if (phrase.charAt(i) != " ") {//系统自定义函数charAt(i)表示取第几位字符,开始时i的值是0,所以返回为'精'字 ,phrase.charAt(i) != " ",这个的意思就是判                                //断parse变量里取出第0个字符是否不等于空字符,前面说了是返回'精',有字符不等于空字符,所以条件成立继续执行下行代码!
      phraseOut = "";//把变量pharaseOut赋予空字符!
      for (j=0; j<i; j++) {//进行循环,循环次数从变量j等于0开始到j小于i这个变量
        phraseOut += phrase.charAt(j);//把变量phrase对应的第j个字符取出来循环赋值给phraseOut变量
      }
      for (j=i; j<position; j++) {//进行循环,循环次数从变量j等于i开始到j小于position代表的值为结束这个变量
        phraseOut += " ";          //把空字符循环赋值给phraseOut;
      }
      phraseOut += phrase.charAt(i); //把从phrase变量字符里取出第i个字符并赋加上前面phraseOut的字符,统一赋给变量phraseOut,也可写为                                                     //:phraseOut=phraseOut+phrase.charAt(i);
      for (j=position; j<animateWidth; j++) {//继续循环,循环次数从j等于position的当前所代表的值开始,一直到j小于animateWidth当前值为循环终止!
        phraseOut += " ";                    //把空字符循环赋值给phraseOut;
      }
      window.status = phraseOut;              //把变量phraseOut的值赋给window.status,也就是IE浏览器的状态栏!此代码只对IE有效,对其他浏览器不起作用!
      if (position == i) {                    //如果变量position的值等于i当前所表示的值,那么就继续执行下面的代码!
        animateWidth++;                        //把变量animateWidth后自增1位或说加1,也可写为;animateWidth=animateWidth+1;
        position = animateWidth;              //把变量animateWidth的值赋给变量position;
        i++;                                  //变量i自增/自加1,也可写为: i=i+1;
      }
      else {                                   //else表示否则
        position--;                           //把变量position后自减一;
      }
    }
    else {                                    //else表示否则
      i++                                     //变量i后自增一位;
    }
    if (i<lenPhrase) {                       //如果变量i的当前值小于变量lenPhrase的当前值
        setTimeout("stack()",pause);          //执行系统自定义函数setTimeout,其作用是在一定时间后执行stack()函数,这个是一开始用户自己定义的函数,执行间                                        //隔为pause当前值,比如5000那么就代表5秒后执行stack()函数,由于第7行就定义了间隙速度为25;
    }
}
// end hiding contents -->
</SCRIPT>
</body> 


不知道这么说能否理解,说实在的,这个代码的原理并不简单!if和FOR循环多次嵌套,甚至有点复杂,不太适合初学者来研究!当然如果你很有天赋,并有很好的基础,那么看懂并自己重写也很正常!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-05-28 13:17
ztslove
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-5-27
收藏
得分:0 
谢谢 你了啊   我也觉的 有点难  初学者啊   看了 很久i没弄明白 主要是那个循环 绕晕了  呵呵···
2010-05-28 14:04
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
这个简单些,容易理解!
程序代码:
<script>
var i=0,j=0,tt,a="欢迎光临本站!",dd=[],cc="";
for (i=0;i<a.length;i++)//循环取出变量a里头的字符赋给数组dd
   {
    dd[i]=a.charAt(i);
   }
function b()
{
   if(j<dd.length)
   {
   cc+=dd[j];
   window.status=cc;                //把单个字符赋给状态栏
   j++;                             //j自增
   tt=window.setTimeout('b()',500);//j如果小于数组dd的长度,就继续自动自行b函数,调用自己!
   }
   else
   {
   window.clearTimeout(tt);//j如果大于数组dd的长度就清除该自动执行机制!
   }

 }
b();
</script>

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-05-28 15:30
ztslove
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-5-27
收藏
得分:0 
谢谢 ···正在学习很高兴认识你 ··
2010-05-28 16:49
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
回复 3楼 gupiao175
相当之有耐心,你太好人了
现在论坛像你这种既有实力又有耐心的人真是少之又少啊
2010-05-31 15:48
sunfeiliao
Rank: 1
等 级:新手上路
帖 子:24
专家分:6
注 册:2009-9-2
收藏
得分:0 
回复 3楼 gupiao175
佩服。。。
2010-06-09 10:41
快速回复:高手帮下忙,看看这段代码···
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018889 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved