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

Recursive Javascript function using callback not working

本文关键字:Javascript 函数 不起作用 递归 回调      更新时间:2023-09-26

我正在尝试使用回调来解决递归函数JS的问题。我只想根据索引更新 3div 的 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); 但它没有用。有人可以帮我解决这个问题吗干杯

行:

var value = i*10; 

应该是

var value = questionID * 10;

我认为

getNumberOfAnswers(i,callFunc(i));

应该是:

getNumberOfAnswers(i,callFunc);

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

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

这是你想要的吗?

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