为什么';这段javascript代码根本不起作用吗?
有人能解释一下为什么吗为什么';这段javascript代码根本不起作用吗?,javascript,settimeout,Javascript,Settimeout,有人能解释一下为什么吗 Edit:我更改了foo方法以提供帮助。我在编辑代码以发布此问题时出错。您的setTimeout正在调用一个不存在的函数,foo() 或为了完全兼容IE: function main(n){ setTimeout(help,500,n); } setTimeout接受函数引用,而不是字符串。尝试以下方法: function main(n){ setTimeout(function(){ help(n); },500);
Edit:我更改了
foo
方法以提供帮助。我在编辑代码以发布此问题时出错。您的setTimeout
正在调用一个不存在的函数,foo()
或为了完全兼容IE:
function main(n){
setTimeout(help,500,n);
}
setTimeout接受函数引用,而不是字符串。尝试以下方法:
function main(n){
setTimeout(function(){
help(n);
},500);
}
function main(n)
{
setTimeout(function () {
help(n);
}, 500);
}
编辑:
setTimeout
可以接受字符串,但此函数不会在main
的闭包内运行,n
将超出范围。另外,强烈建议使用函数引用,如上面的示例。n
在执行帮助函数时不再在范围内。您的main
应该执行以下操作:
function main(n){
setTimeout(function(){
help(n);
},500);
}
function main(n)
{
setTimeout(function () {
help(n);
}, 500);
}
我相信你可能会得到的原因是: 尝试在清除的作用域上运行编译并执行脚本 在Firebug中是由于在页面加载后使用。这也是一个新的Firebug JS错误 一旦它最初运行,您就可以在被允许后写入文档。我尝试使用
document.open()
和document.close()
,添加这两个选项并没有解决问题
不过,还有更好的办法。您可以使用它来替换正文
内容:
function main(n) {
window.setTimeout(function() {
help(n);
}, 500);
}
你的
帮助方法从哪里调用?最好的提问练习是更具描述性,而不是说“根本不起作用”你使用什么浏览器?(我在Chrome、FF和IE9中遇到了“n”未定义”错误)它在我的浏览器上没有显示任何内容,甚至没有说什么错的错误,我在使用Firefox的相关性:抱歉,这是一个错误,这是为了帮助我,我只是在发布问题之前更改了它,忘记了编辑。根据第三个参数,脚本语言是setTimeout
。这就是为什么我们不信任w3schools。附加的参数与IE不兼容…它可以接受一个字符串-不应该(这是不必要的eval
),但它可以。啊,有趣的是,从来都不知道它也接受了一个字符串。因此,在这种情况下,当调用时,n
将超出范围。document。无论如何,在排队函数中写入是一个奇怪的想法。。。似乎写入特定DOM元素的内容更好(如您的示例)。
document.body.innerHTML = n + '<br/>;
document.body.innerHTML += n + '<br/>;
var div = document.createElement('div');
div.innerHTML = n + '<br/>';
document.body.appendChild(div);
function help(n){
var div = document.createElement('div');
div.innerHTML = n + '<br/>';
document.body.appendChild(div);
if (n == 10) {
n = 1;
}
n++;
main(n);
}
function main(n){
setTimeout(function(){
help(n);
}, 500);
}
main(5);