开发者社区> 问答> 正文

js赋值问题,在线刷新急!

如果将clock.innerHTML=_time;移到注释 //①下面的话,那么_time将没有值,求教

    <html><head>
    <style type="text/css">

.clock
{
    padding :10px;

    color:white;
    text-align:center;
    height:12%;
    width:25%;
    margin-left:35%;
    margin-right:35%;
    border:solid 10px black;
    background:gray;

}
</style>
<meta http-equiv="content-type" content="text/html; charset=GBK" />
<script type="text/javascript" >

function disp()
{
var xmlhttp;
var _time="sss";
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        _time=xmlhttp.responseText;
        clock.innerHTML=_time;
    }
  } 

xmlhttp.open("POST","MyJsp.jsp?t="+Math.random(),true);
xmlhttp.send();
 //①

}
</script>

</head>
<body >
<div id="clock"  class="clock" > </div>
 <script type="text/javascript">
    setInterval("disp()",1000);
 </script>
</body>
</html>

展开
收起
小旋风柴进 2016-03-17 11:21:16 2112 0
1 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista

    由于ajax是异步,所以在state状态还没有完全到4时,clock.InnerHTML=_time已经执行完毕,而等状态到4时_time被赋值,这个方法已经执行结束了,1S后又开始重新执行disp()方法。
    要将此值显示,可以尝试用setTimeout()延迟1S执行clock.InnerHTML=_time。(该方法也显示不出,如果延迟1S,那么在这1S期间不会去执行onstateChage(),而是1S后执行clock.InnerHTML=_time,再去执行Onstatechange();唯有将AJAX设置为同步,等其将数据完全解析完毕才行)

    2019-07-17 19:04:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载