Js代码为进度条,不起作用

时间:2011-01-26 13:35:27

标签: javascript

<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没有错误。

3 个答案:

答案 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;
 }

在此处试试:http://jsfiddle.net/pHxSy/

答案 2 :(得分:1)

您正在将字符串文字i++传递给您的函数。尝试使用匿名函数。

function startTime( i )
{
    if ( i < 100 )
    {
        document.getElementById("movingbar").style.width = i + "%";
        i++;
        t = setTimeout(function() { startTime(i); }, 1000);
    } else return;
}