<html>
<body><input type="text" id="clock" size="35" onblur="float()" onfocus="empty()"/>
<script language=javascript> var int=self.setInterval("clock()",3000);
var t = document.getElementById("clock").value;
function clock(){
var content = new Array();
content[0] = "高一";
content[1] = "高二";
content[2] = "高三";
content[3] = "高四";
content[4] = "高五";  for (i=0;i<content.length;i++){
if(t == content[i]){

if(i<4){
t = content[i+1];
}else{
t = content[0];
}
}
}
} function empty(){
document.getElementById("clock").value="";
}
function float(){
if(document.getElementById("clock").value == ""){
document.getElementById("clock").value=t;
}
else{
int=window.clearInterval(int);
}
}</script>
</form>
<button onclick="int=window.clearInterval(int)">
Stop interval</button>
</body>
</html>
我自己写的代码如下,为什么不行啊,
请高手指点一下,是js中不像java没有成员变量和局部变量的区别吗

解决方案 »

  1.   

    <script language="JavaScript">
    <!--function Time(){
     if (!document.layers&&!document.all)
     return
     var Timer=new Date()
     var hours=Timer.getHours()
     var minutes=Timer.getMinutes()
     var seconds=Timer.getSeconds()
     var noon="AM" 
     if (hours>12){
     noon="PM"
     hours=hours-12
     }
     if (hours==0)
     hours=12
     if (minutes<=9)
     minutes="0"+minutes
     if (seconds<=9)
     seconds="0"+seconds
    //change font size here to your desire
    myclock="<font size='4' face='Arial' color=blue>"+hours+":"+minutes+":"
     +seconds+" "+noon+"</b></font>"
    if (document.layers){
    document.layers.position.document.write(myclock)
    document.layers.position.document.close()
    }
    else if (document.all)
    position.innerHTML=myclock
    setTimeout("Time()",1000)
     }
    //-->
    </script>
    <span id="position" style="position:absolute;left:441px;top:190px; width: 128px; height: 30px"> 
    </span>
    源程序讲解:  
     function Time()  定义一个函数。
    { if (!document.layers&&!document.all)
    return 由于IE与Netscape对JavaScript的解释不同,造成浏览的效果不同,所以要分别写代码。这句话判断一下用户所使用的浏览器,如果两者都不是,就返回。
    var timer=new Date() 定义一个新的变量,名字为timer,为一个新的Date的对象。
    var hours=Timer.getHours() 
    var minutes=Timer.getMinutes()
    var seconds=Timer.getSeconds()  分别定义3个变量,获得当前“小时”,“分钟”,“秒”的值。
    var noon="AM" if (hours>12)
    { noon="PM" hours=hours-12 }
    if (hours==0) 
    hours=12 定义一个名为“noon”的变量,当“小时”数大于12时,其值为PM,同时所得值减12;当“小时”数小于12时,其值为AM。
    if (minutes<=9)
    minutes="0"+minutes
    if (seconds<=9) 
    seconds="0"+seconds  如果“分钟”数或“秒”数小于9,则在前面加一个“0”。
    myclock="<font color=blue>"+hours+":"+minutes+":" +seconds+" "+noon+"</b></font>"  用一个新变量把“小时,分,秒”结合起来。
    if (document.layers)
    { document.layers.position.
    document.write(myclock)
    document.layers.position.document.close() }  如果浏览器是Netscape,就输出myclock,同时用于IE的代码就停止执行。
    else if (document.all) 
    position.innerHTML=myclock  否则,浏览器是IE,就输出myclock。
    setTimeout("Time()",1000) 每1000毫秒,调用一次Time函数,即一秒动一次。
    onload="Time()" 页面装载时,调用Time()函数。    
     
     
      

  2.   

    不行啊,我就想实现这个效果:到
    这个网址
    找到上面的图片的地方,那个input里面的内容会不停的有节奏的变化,这个是怎么实现的
    帮忙啊 
      

  3.   

    楼主有两个小错误:
    1、var t = document.getElementById("clock").value; 不能直接取value,否则就得不到最新值了;
    2、没处理初始状态,也就是一开始clock控件的value是空的情况;修改如下:    var int = self.setInterval("clock()",1000);
        var t = document.getElementById("clock");
        function clock(){
            var content = new Array();
            content[0] = "高一";
            content[1] = "高二";
            content[2] = "高三";
            content[3] = "高四";
            content[4] = "高五";
            if (t.value == "") {
              t.value = content[0];
            } else {          
             for (i=0;i<content.length;i++){
                if(t.value == content[i]){
                    if(i<4){
                        t.value = content[i+1]; break;
                    }else{
                        t.value = content[0]; break;
                    }
                }
            }  
            }  
        }
      

  4.   

    我都弄好了,现在改好了,可是实现焦点但是我不理解的地方是上面这里,为什么不能直接取得,t和t.value和之后的不都是取得那个id的值吗?
      

  5.   

    把代码贴出来了:<html>
    <head>
    <title>仿猪八戒放制作|动态循环切换input框内容</title>
    </head>
    <body>
    <input type="text" id="clock" onblur="float()" onfocus="empty()"/>
    <script language=javascript>
    var content = new Array();
    content[0] = "比如:设计一个网站";
    content[1] = "比如:网站程序开发";
    content[2] = "比如:品牌LOGO设计";
    content[3] = "比如:找资源,找人才";
    content[4] = "---wclxyn设计---"; var int=self.setInterval("clock()",3000);
    var t = document.getElementById("clock");
    function clock(){
    if (t.value == "") {
    t.value = content[0];
    } else {          
     for (i=0;i<content.length;i++){
    if(t.value == content[i]){
    if(i<4){
    t.value = content[i+1]; break;
    }else{
    t.value = content[0]; break;
    }
    }
    }  
    }  
    } function empty(){
    for (i=0;i<content.length;i++){
    if(t.value == content[i]){
    t.value = "";
    int=window.clearInterval(int);
    break;
    }
    }  
    }
    function float(){
    if(t.value == ""){
    int=self.setInterval("clock()",2000);
    }
    else{
    int=window.clearInterval(int);
    }
    }
    </script>
    <button onclick="int=window.clearInterval(int)">停止变换</button>
    </body>
    </html>
      

  6.   


    当然不是,.value是会变化的,每次都会被赋予新的值。而你如果直接第一次就取value,那么就永远只是引用了那个旧的值。
    你用Java的方式想想这个问题就清楚了:
    String s = obj.name;
    obj.name = "NewName";
    你说 s 的值还能自动跟着变么?
      

  7.   

    貌似懂了,在js里面得到的
    document.getElementById("clock");
    只是一个对象,简单的理解为一个引用,但是如果是value的话就是他的那个值了,初值定了就不能改变了。