JAVASCRIPT关于setTimeout不起作用的问题(高手帮个忙,在线等)

源代码:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xht... 源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var cir_str="沙国之春归宿";
var i_cir_str_length=cir_str.length;
var str_in_html="";
function circle_text(){

for(var i=0;i<i_cir_str_length;i++)
str_in_html=str_in_html+"<div id='cir_text_div"+i+"'style='width:3;font-family: Courier New;font-weight:bold;position:absolute;top:40;left:50;z-index:0'>"+cir_str.charAt(i)+"</div>";

document.write(str_in_html);
text_round();
}

var alpha=5;
var i_alpha=0.05;
var Timer;
function text_round(){
alert(str_in_html);
alpha=alpha-i_alpha;alert(alpha);
for(var i=0;i<i_cir_str_length;i++){
var alpha1=alpha+0.5*i;
var v_cos=Math.cos(alpha1);
var div_id="cir_text_div"+i;
var obj=document.getElementById(div_id);
obj.style.left=100+100*Math.sin(alpha1)+50;
obj.style.zIndex=20*v_cos;
obj.style.fontSize=40+25*v_cos;
obj.style.color="rgb("+ (27+v_cos*80+50) + ","+ (127+v_cos*80+50) + ",0)";
}
if(true){alert("ssss");
Timer=setTimeout("text_round()",1500);
alert("hhhhhhh");
}
}
</script>
</head>

<body onload="circle_text()">
</body>
</html>
中代码块:
if(true){alert("ssss");
Timer=setTimeout("text_round()",1500);
alert("hhhhhhh");
}
alert("ssss");和alert("hhhhhhh");都能正常运行,但整个函数怎么不循环?
求高手解答。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function test(){
alert("this is a circle.");
setTimeout("test()",1500);
}
</script>
</head>
<body onload="test()">
</body>
</html>
这个里面的 setTimeout("test()",1500);能正常运行。所以二楼说的setTimeout()第一个参数不能用引号是不准确的。
但是我去掉引号,确实能循环了。
为什么?
document.write()和setTimeout()在这里有冲突,没人说出原因啊setTimeout("function_name()",int_value),setTimeout(function_name,int_value),setTimeout(function(){statements;},int_value),以上三种形式都是正确的,都可以正确运行。
展开
 我来答
ylongshao1987
2011-02-17 · TA获得超过9811个赞
知道小有建树答主
回答量:1277
采纳率:100%
帮助的人:709万
展开全部
楼主,你这里不是它自动循环的,setTimeout("test()",1500)更本就不能达到这个函数这样写的效果,因为你的消息都是alert出来的,达不到自动的效果。所以你需要的函数只是要一个参数的,也就是setTimeOut(test())。当你去掉引号的时候,js会认为没有这个方法,而按照只有第一个参数的方法去运行,所以就可以循环了。
百度网友e6cf4c70c
2011-02-20 · TA获得超过281个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:190万
展开全部
哈哈哈,楼主强人,调用一个函数是用函数名而不是字符串啦,Timer=setTimeout("text_round()",1500);改为Timer=setTimeout(text_round,1500); 另外保存timer的变量首字母不要大写,放置跟一些类冲突

参考资料: javascript权威指南 语法部分

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你是谁LCqTt
推荐于2016-01-16 · TA获得超过602个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:857万
展开全部
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var cir_str="沙国之春归宿";
var i_cir_str_length=cir_str.length;
var str_in_html="";
function circle_text(){

for(var i=0;i<i_cir_str_length;i++)
str_in_html=str_in_html+"<div id='cir_text_div"+i+"'style='width:3;font-family: Courier

New;font-weight:bold;position:absolute;top:40;left:50;z-index:0'>"+cir_str.charAt(i)

+"</div>";

document.write(str_in_html);
text_round();
}

var alpha=5;
var i_alpha=0.05;
var Timer;
function text_round(){
alert(str_in_html);
alpha=alpha-i_alpha;alert(alpha);
for(var i=0;i<i_cir_str_length;i++){
var alpha1=alpha+0.5*i;
var v_cos=Math.cos(alpha1);
var div_id="cir_text_div"+i;
var obj=document.getElementById(div_id);
obj.style.left=100+100*Math.sin(alpha1)+50;
obj.style.zIndex=20*v_cos;
obj.style.fontSize=40+25*v_cos;
obj.style.color="rgb("+ (27+v_cos*80+50) + ","+ (127+v_cos*80+50) + ",0)";
}
if(true){alert("ssss");

}Timer=setTimeout(text_round(),1000);//移到外边来
}
</script>
</head>

<body onload="circle_text()">
</body>
</html>

你不应该在text_round()外加引号。因为seTimeout第一个参数要求一个函数,而不是一个字符串。

Sorry,我理解错了。

还有,别用document.write吧,你可以改成下面这样:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var cir_str="沙国之春归宿";
var i_cir_str_length=cir_str.length;
var str_in_html="";
function circle_text() {
for(var i=0;i<i_cir_str_length;i++)
str_in_html=str_in_html+"<div id='cir_text_div"+i+"'style='width:3;font-family: Courier New;font-weight:bold;position:absolute;top:40;left:50;z-index:0'>"+cir_str.charAt(i)+"</div>";

document.getElementById("divTest").innerHTML = str_in_html;
text_round();
}

var alpha=5;
var i_alpha=0.05;
var Timer;
function text_round(){
alpha=alpha-i_alpha;
for(var i=0;i<i_cir_str_length;i++){
var alpha1=alpha+0.5*i;
var v_cos=Math.cos(alpha1);
var div_id="cir_text_div"+i;
var obj=document.getElementById(div_id);
obj.style.left=100+100*Math.sin(alpha1)+50;
obj.style.zIndex=20*v_cos;
obj.style.fontSize=40+25*v_cos;
obj.style.color="rgb("+ (27+v_cos*80+50) + ","+ (127+v_cos*80+50) + ",0)";
}
setTimeout("text_round();", 1500);
}
</script>
</head>

<body onload="circle_text()">
<div id="divTest"></div>
</body>
</html>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
supwinebibber
2011-02-17
知道答主
回答量:25
采纳率:0%
帮助的人:7.1万
展开全部
Timer=setTimeout("text_round()",1500);
改为
Timer=setTimeout("text_round",1500);
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式