我正在尝试使用回调修复我的递归函数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);但它不起作用。 有人可以帮我这个 干杯
答案 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。其他一切都很好。