在function go() 里面设置了定时刷新,但是为什么我运行的时候,只弹出两次对话框就没反应了, 俺是Javascript菜鸟, 请高手帮帮忙
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="window.aspx.cs" Inherits="Chat_window" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<script language="javascript" type="text/javascript" >
//<!--
function bar(){
    //load数据
var oList,item;
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
xmlDoc.async=false;
xmlDoc.load("TheChatScreenWin.aspx");
if(xmlDoc.parseError!=0)
document.writeln(xmlDoc.parseError.reason+"<br>");
else
{ oList=xmlDoc.documentElement.childNodes;
for(var i=0;i<oList.length;i++)
document.write(oList[i].xml+"<br>");

//wo.innerHTML=new Date(); 
}
window.alert("dddd");}      //每1.5秒重获一次数据,//-->
function go(){    bar();
   var timeoutid = setTimeout("bar()",1500);
}
</script>
    <title>无标题页</title>
</head>
<body onload="MM_callJS('go()')">
<script language="javascript" type="text/javascript">
//<!--
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
//-->
</script></body>
</html>

解决方案 »

  1.   

     setTimeout("bar()",1500); 意思是1.5秒后执行一次。应该使用setInterval()表示每个一段时间执行一次。
      

  2.   

    目前看到的是这个用法的错误,是应该用
    setInterval()
      

  3.   

    顶2楼,也可以在函数里写setTimeout,同样实现setInterval的功能如
    function A()
    {
     var s=setTimeout("A",1500);
    }
      

  4.   

    或者是把它
    var timeoutid = setTimeout("bar()",1500);
    改为
    var timeoutid = setTimeout("go()",1500);你的执行两次很正常的function go(){
       bar();  //第一次执行,
       var timeoutid = setTimeout("bar()",1500);  //过1.5秒后,再执行一次。
    }
      

  5.   

    楼上基本上都正解,对于定时刷新的,建议使用setInterval()
      

  6.   

    setTimeout代表只执行一次,如果需要重复执行需要修改成setInterval
      

  7.   

    也可以用死循环来执行setTimeout(),最好用setInterval()
      

  8.   

    function go(){    bar();
       var timeoutid = setTimeout("bar()",1500);
    }
    setTimeout("bar()",1500);