javascript陷入死循环了,很简单 帮看看,谢谢
<script language= "JavaScript ">
function GetResult()
{
/*
*--------------- GetResult() -----------------
* GetResult()
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult();
*--------------- GetResult() -----------------
*/
// 单位:毫秒
var timeInterval = 200;
var oBao = new ActiveXObject( "Microsoft.XMLHTTP ");
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.
oBao.open( "POST ", "asptxt.asp ",false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
var strResult = unescape(oBao.responseText);
//将字符串分开.
var arrTmp = strResult.split( "@@@ ");
var j=0;
window.setInterval(writeNum, timeInterval);
function writeNum()
{
var oTab = document.getElementById( "tb1 ");
{
if(j <arrTmp.length)
{ oTab.rows[0].cells[0].innerHTML = arrTmp[j++]; }
else
{ j=0; GetResult()}
}
}
}
<table width= "47% " height= "23 " border= "0 " cellpadding= "1 " cellspacing= "0 " id= "tb ">
<tr>
</tr>
</table>
问题肯定是在 { j=0; GetResult()} 这句
当循环完了,之后,用GetResult()我想从服务器得到新数据,但是效果是:内容更新变化越来越快,cpu利用率从最初的0到100%。
------解决方案--------------------代码乱七八糟滴,俺不是已经给 lz 回帖了,
先把思路搞清楚再往下写吧!
------解决方案--------------------确实很乱,试试这样:
var MyMar=window.setInterval(writeNum, timeInterval);
……
{j=0;clearInterval(MyMar);GetResult()}
------解决方案--------------------很多情况会让这个程序进入死循环!
最有可能,你的arrTmp.length一直等于0
所以你程序一直ajax
200ms的时间太短了。