<div id="topicindexmsg"><a href="javascript:maketopicindex();" id="maketopicindex" style="color:green;">开始建立索录入</a></div>
var tpages =400;
var num=0;
function maketopicindex() {
$.get("/makeindex/"+num, function(msg) {
if(msg=='ok'){
if(num<=tpages){
maketopicindex();
}else{
num=0;
$("#topicindexmsg").html("<font color='green'>已完成!</font>");
return false;
}
$("#maketopicindex").parent().html("<font color='orange'>正在重新建立文章索引,请稍后("+num+"/"+tpages+")...</font>");
num++;
}
});
}
为什么一直停在显示 【正在重新建立文章索引,请稍后(0/400)】
正常不应该是会自动循环增加数字吗?问题出在哪里了
请稍后(5/400)
请稍后(10/400)
请稍后(15/400)
你代码的主要问题是执行$("#maketopicindex").parent().html("。。。。。");之后,#maketopicindex元素就被覆盖掉了,下次再获取$("#maketopicindex")就获取不到了。
num会增加,只是页面上不更新显示了。
应该改成$("#topicindexmsg").html("<font color='orange'>正在重新建立文章索引,请稍后(" + num + "/" + tpages + ")...</font>");
if (msg == 'ok') {
if (num <= tpages) {
$("#topicindexmsg").html("<font color='orange'>正在重新建立文章索引,请稍后(" + num + "/" + tpages + ")...</font>");
num++;
maketopicindex();
} else {
num = 0;
$("#topicindexmsg").html("<font color='green'>已完成!</font>");
return false;
}
}
因为在这里:
if(num<=tpages){
maketopicindex();
}
一直在回调,每次请求带的num都是0, 根本就执行不下去,每次请求完成,都走到这一步,然后就递归了,一直死循环
把下面的输出到页面的代码放到上面试一下:
if(num<=tpages){
$("#maketopicindex").parent().html("<font color='orange'>正在重新建立文章索引,请稍后("+num+"/"+tpages+")...</font>");
num++;
maketopicindex();
}
get是异步执行的,也就是执行到正在重新建立文章索引,请稍后的时候,get可能还没有执行。
整个逻辑不对,需要重新梳理。