Javascript 聚焦/模糊进展
您好,我是javascript新手,今天在这方面很努力,但找不到解决方案。 请帮帮我Javascript 聚焦/模糊进展,javascript,timer,countdown,onblur,onfocus,Javascript,Timer,Countdown,Onblur,Onfocus,您好,我是javascript新手,今天在这方面很努力,但找不到解决方案。 请帮帮我 <script> if (/*@cc_on!@*/false) { document.onfocusin = startB; document.onfocusout = stopB; } else { window.onfocus = startB; window.onblur = stopB; } var x
<script>
if (/*@cc_on!@*/false) {
document.onfocusin = startB;
document.onfocusout = stopB;
} else {
window.onfocus = startB;
window.onblur = stopB;
}
var x = 1000;
var y = 1;
function startB() {
if (x !== 'ok') {
x = x - y;
document.form.num.value = x;
timeoutID=setTimeout("startB()", 1000);
}
if (x == 0) {
x = 'ok';
document.form.num.value = x;
}
}
function stopB() {
clearTimeout(timeoutID);
}
</script>
<body onLoad="startB()">
<form name="form">
<input name="num" size="10" readonly="readonly" type="text">
</form>
如果(/*@cc_on!@*/false){
document.onfocusin=startB;
document.onfocusout=stopB;
}否则{
window.onfocus=startB;
window.onblur=stopB;
}
var x=1000;
变量y=1;
函数startB(){
如果(x!=“确定”){
x=x-y;
document.form.num.value=x;
timeoutID=setTimeout(“startB()”,1000);
}
如果(x==0){
x=‘ok’;
document.form.num.value=x;
}
}
函数stopB(){
clearTimeout(timeoutID);
}
当我打开此页面时,它通常以1/s的值倒计时,当我更改窗口/选项卡时,它停止,我再次返回,它以1/s的速度继续,这是我想要的,但我有一个大问题-->当我转到此链接并非常快地更改窗口/选项卡时,仍处于卸载状态,它开始以onblur状态倒计时,当我回到onfocus状态时,函数被读取两次并开始倒计时1/0.5秒。。。加倍
有人能帮我吗?
提前感谢。让startB在设置超时之前呼叫stopB。将stopB更改为:
这样,如果timeoutID已被清除(或尚未设置),它将不会抛出错误
编辑
如果在load事件发生之前导航离开页面,则计时器将在页面未获得焦点的情况下启动。如果在设置超时之前取消超时(即startB总是在调用setTimeout之前调用stopB),则不能运行两个计时器 没有,没有区别。再次,若我改变标签,直到页面加载结束,倒计时再次开始,返回后再次变为双倍。
if (timeoutID) clearTimeout(timeoutID);