所以我对javascript有点新鲜,但我试图通过点击按钮来制作进度条,其他一些功能。我想在javascript中使用设置间隔来计算时间,这是我到目前为止的js:
//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在这里:http://jsbin.com/apoboh/1/edit
现在,它什么也没做,它给了我:未捕获的ReferenceError:未定义进度
答案 0 :(得分: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
}
答案 1 :(得分:0)
变量uno
只保存您刚刚设置的超时的句柄。如果您需要通过拨打clearTimeout()
,可以在以后使用它来清除超时。
如果您不需要清除超时,那么根本没有理由存储句柄。
答案 2 :(得分:0)
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秒调用一次。
答案 3 :(得分:0)
你忘了在uno()
之前加上“function”字样