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),以上三种形式都是正确的,都可以正确运行。 展开
<!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),以上三种形式都是正确的,都可以正确运行。 展开
4个回答
展开全部
哈哈哈,楼主强人,调用一个函数是用函数名而不是字符串啦,Timer=setTimeout("text_round()",1500);改为Timer=setTimeout(text_round,1500); 另外保存timer的变量首字母不要大写,放置跟一些类冲突
参考资料: javascript权威指南 语法部分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<!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>
"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>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Timer=setTimeout("text_round()",1500);
改为
Timer=setTimeout("text_round",1500);
试试
改为
Timer=setTimeout("text_round",1500);
试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询