<div><div id="movingbar"></div></div>
var i;
function startTime( i )
{
if ( i < 100 )
{
document.getElementById("movingbar").style.width = i + "%";
t = setTimeout('startTime( i++ )', 1000);
} else return;
}
这应该产生类似进度条的东西。但该功能只执行一次。有什么问题O_o递归不应该在 i 低于100之前结束!?! FireBug和IE没有错误。
答案 0 :(得分:2)
因为你传递的字符串是超时,这是要评估的代码,你实际上是在告诉它运行代码'startTime(i)',并且在运行时我未定义。你想要它运行的是'startTime(2)','startTime(3)'等等。
这应该适合你:
t = setTimeout('startTime(' + ++i + ')', 1000);
答案 1 :(得分:1)
这有效:
<div style="height: 20px;"><div id="movingbar" style="height: 20px;background: #000;"></div></div>
window.onload=function(){var i=1;
startTime(i);
}
function startTime( i )
{
if ( i < 100 )
{
document.getElementById("movingbar").style.width = i + "%";
i++;
t = setTimeout('startTime('+i+')', 1000);
} else return;
}
答案 2 :(得分:1)
您正在将字符串文字i++
传递给您的函数。尝试使用匿名函数。
function startTime( i )
{
if ( i < 100 )
{
document.getElementById("movingbar").style.width = i + "%";
i++;
t = setTimeout(function() { startTime(i); }, 1000);
} else return;
}