Javascript setinterval的时间不起作用

0 javascript setinterval

以下代码:

<script type="text/javascript">

function a() {
    document.write("bob ");
}

setInterval("a()", 1000);

</script>
Run Code Online (Sandbox Code Playgroud)

是应该有一个出放1 bob,printed在浏览器上,every second.

我正在使用firefox,它只打印onces,没什么......任何人有任何想法为什么?mauybe我错过了什么?ec = now.getSeconds(); document.write(hours +':'+ mins +':'+ sec +"
"); }

UPDATE EDIT:
Run Code Online (Sandbox Code Playgroud)

我对此代码有同样的问题:

<script type="text/javascript">
function printtime () {
    var now = new Date();
    var hours = now.getHours();
    var mins = now.getMinutes();
    var sec = now.getSeconds();
    document.write(hours+':'+mins+':'+sec+"<br />");
}

setInterval("printtime()", 1000);
</script>
Run Code Online (Sandbox Code Playgroud)

它应该打印在前一个浏览器上的时间,每秒一次....但它不会比第一个打印更多..

T.J*_*der 5

document.write在主HTML解析完成后使用完全擦除页面并将其替换为您输出的内容.在Firefox上,它会清除您的计时器,因此它只会在触发一次并擦除页面后停止.(Chrome不是这样,它可以保留此a功能,因此您的原始代码适用于Chrome,但不适用于Firefox.)

如果你只是输出新的元素到页面,你有什么工作:

function a() {
  var p = document.createElement("p");
  p.appendChild(
    document.createTextNode("bob")
  );
  document.body.appendChild(p);
}

setInterval("a()", 1000);
Run Code Online (Sandbox Code Playgroud)

但是,最好不要使用setInterval或带字符串setTimeout; 只需参考函数:

setInterval(a, 1000);
Run Code Online (Sandbox Code Playgroud)

function a() {
  var p = document.createElement("p");
  p.appendChild(
    document.createTextNode("bob")
  );
  document.body.appendChild(p);
}

setInterval(a, 1000);
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想重复添加文本到现有元素的末尾:

function a() {
  var p = document.getElementById("target");
  p.appendChild(
    document.createTextNode("bob ")
  );
}

setInterval(a, 1000);
Run Code Online (Sandbox Code Playgroud)
<p id="target"></p>
Run Code Online (Sandbox Code Playgroud)