使用回调不起作用的递归Javascript函数

时间:2012-06-26 11:22:51

标签: javascript recursion

我正在尝试使用回调修复我的递归函数JS的问题。我只想根据索引更新3 div的HTML。请找到以下代码

<div id="try0">50</div>
<div id="try1">50</div>
<div id="try2">50</div>

function getNumberOfAnswers(questionID, callback)
{
  var value = i*10;
   callback( value.toString());

}

var i=0;
getNumberOfAnswers(i, function callFunc(ratio){
    var itemToChg = 'try'+i;
document.getElementById(itemToChg).innerHTML = ratio;
    if(i<3){
        i++;
        getNumberOfAnswers(i,callFunc(ratio));

    }

    });

我没有在上面的代码上添加任何标签来简化,但我用它制作了一个JSfiddle。 http://jsfiddle.net/cyrilGa/zmtQ8/。在最后的第三行,我试着写getNumberOfAnswers(i,ratio);但它不起作用。 有人可以帮我这个 干杯

3 个答案:

答案 0 :(得分:2)

该行:

var value = i*10; 

应该是

var value = questionID * 10;

我认为

getNumberOfAnswers(i,callFunc(i));

应该是:

getNumberOfAnswers(i,callFunc);

答案 1 :(得分:1)

不要为此使用递归,这很愚蠢。

for ( var i = 0; i < 3; i++ ) {
    document.getElementById('try' + i).innerHTML = i * 10;
}

这是你想要的吗?

答案 2 :(得分:0)

您需要将底部的递归callFunc(ratio);替换为callFunc(i);,因为当您递增ratio时,参数i仍然等于0。其他一切都很好。