[英]Javascript Function setInterval() works only one time
伙計們! 我想問一下Javascript函數setInterval()。 我的問題是setInterval()只工作一次,而不是重復。
這是我的HTML代碼
<button id = 'btun' name = 'btun' onclick = 'changecolor();' class = 'btn btn-success btn-block'>Color Change</button>
和Javascript代碼
function below(t){
var button = document.getElementById('btun');
var quadrant = (t*t + 2*t + 1)+"px";
console.log('ye');
button.style.marginTop = quadrant;
document.write(pix);
}
var doBelow = setInterval(below(t++),1);
if(t > 50){
clearInterval(doBelow);
}
我找不到有什么不對。
setInterval
甚至不能工作一次。 函數調用一次的原因是您在嘗試使用setInterval
時調用它,並且在setInterval
調用中使用函數的返回值( undefined
)。
使用函數表達式創建一個調用below(t++)
的區間。 您可以將檢查t > 50
條件的代碼放在函數內部,否則它也只運行一次。
function below(t){
var button = document.getElementById('btun');
var quadrant = (t*t + 2*t + 1)+"px";
console.log('ye');
button.style.marginTop = quadrant;
document.write(pix);
if(t >= 50){
clearInterval(doBelow);
}
}
var doBelow = setInterval(function() { below(t++); },1);
注意:在間隔中使用document.write
不是一個好主意。 在頁面完成后運行時,它將打開一個要寫入的新頁面來替換當前頁面。
setInterval
期望將回調作為第一個參數,但是您正在調用實際函數。
通話應如下所示
setInterval(function() {
below(t++); }
,1);
所以在這里你要創建一個匿名回調,它將在下面調用你的函數。 並且最好將退出條件t >= 50
置於函數below
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.