我目前是JavaScript的初学者,主要是Java代码。
我的问题是关于定期(每1/2秒)调用document.write("string here")
以向客户端附加任何新的未打印的聊天消息。我之前尝试使用以下代码:
<html>
<body onload="yantra();">
<script type="text/javascript">
x = 0;
function yantra(){
document.write("Hello<br>");
i = 1;
for(i = 0; i < 100; i++){
setTimeout("writeOneNum()", 1000);
}
}
function writeOneNum(){
x =x + 1;
document.write(x+"<br>");
}
function blank(){}
</script>
</body>
</html>
而不是像我预期的那样每1000毫秒打印1到100个;实际上,它一次打印1到100(意思是没有任何延迟)。
答案 0 :(得分:1)
嗯,你正在设置所有的超时,所以当然它会立刻解雇所有超时。您的代码将对循环进行少量修改:
function yantra(){
document.write("Hello<br>");
i = 1;
for(i = 0; i < 100; i++){
setTimeout("writeOneNum()", 1000 * i);
}
}
通过将时间乘以i
,第一个会立即触发,第二个会在1000 * 1 = 1000
毫秒,第三个会在1000 * 2 = 2000
毫秒等。
在您的情况下,考虑setInterval函数可能更明智:
function yantra(){
document.write("Hello<br>");
setInterval("writeOneNum()", 1000);
}
这将无限地每秒发射writeOneNum()
。要在某个时刻停止间隔,请查看上面同一链接上的clearInterval。