我想动态循环每隔2秒钟改变input里面的值

一只独孤的程序猿 2012-02-18 03:04:25

<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没有成员变量和局部变量的区别吗

...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ldh911 的回复:]

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


当然不是,.value是会变化的,每次都会被赋予新的值。而你如果直接第一次就取value,那么就永远只是引用了那个旧的值。


你用Java的方式想想这个问题就清楚了:
String s = obj.……
[/Quote]
貌似懂了,在js里面得到的
document.getElementById("clock");

只是一个对象,简单的理解为一个引用,但是如果是value的话就是他的那个值了,初值定了就不能改变了。
MiceRice 2012-02-18
  • 打赏
  • 举报
回复
楼主有两个小错误:
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;
}
}
}
}
}
MiceRice 2012-02-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wclxyn 的回复:]
我都弄好了,现在改好了,可是实现焦点但是我不理解的地方是上面这里,为什么不能直接取得,t和t.value和之后的不都是取得那个id的值吗?
[/Quote]

当然不是,.value是会变化的,每次都会被赋予新的值。而你如果直接第一次就取value,那么就永远只是引用了那个旧的值。


你用Java的方式想想这个问题就清楚了:
String s = obj.name;
obj.name = "NewName";
你说 s 的值还能自动跟着变么?

  • 打赏
  • 举报
回复
把代码贴出来了:

<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>
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ldh911 的回复:]
1、var t = document.getElementById("clock").value; 不能直接取value,否则就得不到最新值了;
[/Quote]
我都弄好了,现在改好了,可是实现焦点但是我不理解的地方是上面这里,为什么不能直接取得,t和t.value和之后的不都是取得那个id的值吗?
  • 打赏
  • 举报
回复
不行啊,我就想实现这个效果:


这个网址
找到上面的图片的地方,那个input里面的内容会不停的有节奏的变化,这个是怎么实现的
帮忙啊
gopojim 2012-02-18
  • 打赏
  • 举报
回复
setTimeout("Time()",1000)
gopojim 2012-02-18
  • 打赏
  • 举报
回复
<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()函数。





81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧