无法使javascript间隔正常工作
所以我对javascript有点陌生,但我试图通过点击一个按钮来创建一个带有其他一些功能的进度条。我尝试在javascript中使用设置的时间间隔来计时条,这是我迄今为止的js:无法使javascript间隔正常工作,javascript,onclick,Javascript,Onclick,所以我对javascript有点陌生,但我试图通过点击一个按钮来创建一个带有其他一些功能的进度条。我尝试在javascript中使用设置的时间间隔来计时条,这是我迄今为止的js: //Javascript Document function progress(){ Var uno = setTimeout("uno()", 3000); uno(){ document.getElementById("title").innerHTML = "Connecting..."; d
//Javascript Document
function progress(){
Var uno = setTimeout("uno()", 3000);
uno(){
document.getElementById("title").innerHTML = "Connecting...";
document.getElementById("progressInner").style.display = 'block';
document.getElementById("progressInner").style.width = '20px';
}
}
从我收集的信息来看,这就是它的工作原理,但我对此表示怀疑,因为我似乎在设置变量uno
,但没有对它做任何事情。。。。从我的php背景来看,这不是它的工作原理:p你们能在这方面给我一些建议吗?我的html在这里:
现在,它什么也不做,它给了我:uncaughtreferenceerror:progress未定义变量
uno
只是保存您刚才设置的超时的句柄。如果需要,可以稍后通过调用来清除超时,然后再执行超时
如果不需要清除超时,那么根本没有理由存储句柄
function progress(){
function uno(){
document.getElementById("title").innerHTML = "Connecting...";
document.getElementById("progressInner").style.display = 'block';
document.getElementById("progressInner").style.width = '20px';
}
var timeoutFunc = setTimeout(uno, 3000);
}
您将函数传递给setTimeout,它稍后将调用该函数,而不是字符串。因此,此代码将定义一个函数uno,然后将其传递给setTimeout并延迟3秒,然后每隔3秒调用一次。首先,您使用的是
setTimeout
而不是setInterval
。前者触发回调一次,后者以设定的间隔无限期地触发回调
其次,这些方法返回一个令牌,您可以使用该令牌取消setInterval,改为执行此操作
function startProgress(){
// only start progress if it isn't running
if (!App.progressToken) { // App is you apps namespace
App.progressToken = setInterval(function(){
document.getElementById("title").innerHTML = "Connecting...";
document.getElementById("progressInner").style.display = 'block';
document.getElementById("progressInner").style.width = '20px';
}, 3000);
}
}
稍后,当您要停止时:
function stopProgress(){
clearInterval(App.progressToken);`
delete App.progressToken
}
你忘了在uno()前面加上单词“function”(
Var
需要小写,而uno需要在前面加上function
标识符。此外,分配给第一个uno的超时将被执行该操作的函数声明所覆盖,+1也用于解释,而不仅仅是按我的方式抛出代码:)np——我将它清理了一点