js clearTimeout不起作用怎么回事,关不了那个定时器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js clearTimeout不起作用怎么回事,关不了那个定时器相关的知识,希望对你有一定的参考价值。

window.onload=function()
var oSet=document.getElementsByClassName("setting")[0];
var oSetBar=document.getElementsByClassName("stting_bar")[0];
timer=null;

oSet.onmouseover=function()

oSetBar.style.display='block';
;
oSet.onmouseout=function()

timer=setTimeout(function()
oSetBar.style.display='none';
,300);
;
oSetBar.onmouseover=function()

clearTimeout(timer);

;

设置延时器之前先清除下延时器,不然每次事件触发都会多一个延时器,延时器之间互相干扰,造成紊乱。
oSet.onmouseout=function()

clearTimeout(timer) //在这多写一行清除代码,其它不变,下面清除延时器代码也不变
timer=setTimeout(function()
oSetBar.style.display='none';
,3000);
;

题主试一下,应该是这个问题追问

加了那行代码还是不行,还是没关上

追答

不知道你说的关是咋关,只要鼠标从oSet移开,就会重新设置一个延时器

追问

我想要的就是鼠标移到oSetBar上的时候把定时器关掉,让oSetBar不隐藏,现在的情况就是鼠标移到oSetBar上它还是300ms后就隐藏了

追答


window.onload=function()
var oSet=document.getElementsByClassName("setting")[0];
var oSetBar=document.getElementsByClassName("stting_bar")[0];
timer=null;
var a=0;
oSet.onmouseover=function()

oSetBar.style.display='block';
;
oSet.onmouseout=function()

if(a==0)
clearTimeout(timer)
timer=setTimeout(function()
oSetBar.style.display='none';
,1000);


;
oSetBar.onmouseover=function()

clearTimeout(timer)
a=1;
;


在oSet的鼠标移上事件里加个判断条件,判断有没有鼠标移上oSetBar,根据返回的布尔值来决定是否执行函数。不知道理解你的意思了没,你这样试试。只要鼠标移入oSetBar定时器就失效了。

参考技术A //设定时器
var timer=setTimeout(......);
//停止定时器
clearTimeout(timer);

settimeout的参数不起作用

response.write"……………………………………"
response.write"<script>setTimeout(location.href='index.asp',30000000);</script>"

我虽然把后面的参数(毫秒)调到了3000万,但是还是一秒不到的时间就转向index.asp了,这是怎么回事??

因为seTimeout第一个参数要求一个函数,而不是一个字符串,所以要写入下面程序:

<!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>

还有,别用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>
参考技术A 你把location.href改为一个普通变量,看是否页面仍然跳转。

我估计你其它地方还有跳转语句,因为你上面的语句看来没有问题,不会1秒就跳的。如果你改为普通变量赋值都还跳,那就说明页面还有跳转语句。
参考技术B response.write"<script>setTimeout(""location.href='index.asp'"",30000000);</script>"

这样就可以了,一定要用引号

我的blog http://readlog.cn本回答被提问者采纳

以上是关于js clearTimeout不起作用怎么回事,关不了那个定时器的主要内容,如果未能解决你的问题,请参考以下文章

开和关音频按钮在 JS 中不起作用

数组拼接在这种方法中不起作用是怎么回事?

ik分词停用词典stopword.dic对中文不起作用,求大侠帮忙是怎么回事

webuploader上传文件时,pick对象里设置的 multiple参数不起作用,怎么回事

mysql中order by 排序用asc和desc不起作用怎么回事

页面里的style=background-color不起作用是怎么回事?