JavaScript不考虑退出条件,而变量仍然等于输出条件
我有一个提交到JavaScript的HTML表单,数据被处理,POST请求被发送到PHP脚本JavaScript不考虑退出条件,而变量仍然等于输出条件,javascript,requirejs,infinite-loop,Javascript,Requirejs,Infinite Loop,我有一个提交到JavaScript的HTML表单,数据被处理,POST请求被发送到PHP脚本 var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { if(contentElt && x
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
if(contentElt && xmlHttp.responseText) {
var ajaxData = JSON.parse(xmlHttp.responseText);
var processedResultCount = parseInt(ajaxData[0]);
totalResultCount += processedResultCount;
contentElt.innerHTML = "Date processed (month - year): " + recupMonth + " - " + recupYear + "<br/>Results processed: " + processedResultCount + "<br/>Total results processed: " + totalResultCount;
pageNum++;
writeMode = "a";
if(processedResultCount === 0) {
pageNum = 1;
recupMonth--;
if(recupMonth === 0 && recupYear > endYear) {
recupMonth = 12;
recupYear--;
}
else if(recupMonth === endMonth && recupYear === endYear) {
alert("Processing finished");
if(totalResultCount != 0) {
contentElt.innerHTML = "Total processed results: " + totalResultCount + '<br/><br/>> <a href="amazon_keyword_stats.csv" title="Download CSV result file">Download CSV result file</a>';
}
return;
}
}
并且满足条件。
代码不能输入
继续减少月份,当它达到-2时,它仍然执行五次迭代,然后代码arette不提供CSV下载
我不明白为什么会这样,有人会有线索吗
else if(recupMonth === endMonth && recupYear === endYear)
recupMonth、endMonth、recupYear和endYear是否为同一类型?因为它们中的一些可能是字符串而不是数字,并且运算符“==”没有将它们视为相等
如果您不确定,您可以尝试将它们解析为该条件内的数字(如果有效,至少可以尝试):
或者通过不比较类型来尝试:
else if(recupMonth == endMonth && recupYear == endYear)
希望这有帮助
关于。在哪里设置了
recipmonth
,endMonth
,recipyear
,endYear
?他们关门了吗?它们是否都是相同的类型?是否在浏览器的调试器中运行?所有de变量都正确地设置为相同的类型?我在调试器中运行时,查询以月减量发送。我不明白为什么?如果(parseInt(recupMonth,10)==parseInt(endMonth,10)和&parseInt(recupYear,10)==parseInt(endYear,10))的话,它在其他方面会有很多工作要做
else if(parseInt(recupMonth, 10) === parseInt(endMonth, 10) && parseInt(recupYear, 10) === parseInt(endYear, 10))
else if(recupMonth == endMonth && recupYear == endYear)