可能重复:
setInterval not working (firing only once) in Google Chrome extension
使用document.write()时,此错误只是一个问题。
我在Mac 10.6.8 Intel。
这是我的剧本:
setInterval(function(){myFun()},1000);
function myFun() {
document.write('something');
}
各种浏览器的行为有所不同: Firefox 12:只发生一次。浏览器在状态栏中显示“正在连接”。 谷歌浏览器和Safari:似乎工作正常。
注意:使用setTimeout会导致所有内容都像firefox(不工作)一样。 使用setInterval(myFun),1000),这应该是这么多错误的来源,行为相同。
答案 0 :(得分:1)
许多初学教程都将document.write()用于“hellow world”。但是,这个功能很危险,因为它可能会破坏脚本(通过编制整个程序)。这是一种安全的调试打印输出方式:
之前脚本,在html和html之间添加:
<div id="myDebug"></div>
在脚本中,首先将其转换为可以调用的变量:
var myDebug = document.getElementById("myDebug");
当您需要展示某些内容时,请执行以下操作:
debug.innerHTML = "some string";
这将在浏览器窗口中显示字符串。
答案 1 :(得分:0)
似乎你在myFun()之后错过了分号
setInterval(function(){myFun();},1000);
function myFun() {
document.write('something');
}
还要确保将该功能放在<body></body>
答案 2 :(得分:0)
document.open()
会导致文档清除。在document.write()
之前,Firefox会调用此函数。因此你的间隔就会丢失。
答案 3 :(得分:0)
试试这个:
setInterval(function(){myFun()},1000);
function myFun() {
// Return all elements in document of type 'body'
// (there will only be one)
var bodyArray = document.getElementsByTagName('body');
// get the body element out of the array
var body = bodyArray[0];
// save the old html of the body element
var oldhtml=body.innerHTML;
// add something to the end
body.innerHTML=oldhtml+"somrthing";
}
正如其他人所提到的,使用document.write()
会(在某些浏览器中)核对用于更新文档的脚本,写入正文(而不是应该存储javascript的头部)将阻止此happing。