gpt4 book ai didi

javascript - 这里的细微错误是什么?

转载 作者:行者123 更新时间:2023-11-30 08:55:12 24 4
gpt4 key购买 nike

我放弃了。这看起来微不足道,但在我尝试过的任何浏览器(IE8、Firefox 17)中始终不起作用。我可以证明 javascript 已启用并且在使用它的其他页面上工作正常,但 4 秒后,这始终表现得好像 javascript 已禁用,并重定向到“nojava.html”页面。为什么?

<html>
<head>
<meta http-equiv="refresh" content="4;url=nojava.html">
<title>Test Page</title>

<script language="JavaScript">
function CheckJava() {
timerID = setTimeout("after3sec", 3000);
}

function after3sec() {
window.location="intro1.html";
}
</script>
</head>

<body onload="CheckJava()">
<p>Test text</p>
</body>
</html>

我完全预料到答案会让我感到尴尬......

最佳答案

微妙的错误是,如果您将字符串传递给 setTimeout , 它将评估字符串作为 JavaScript 代码。现在,

after3sec

有效的 JS 代码,但它只返回对名为 after3sec 的函数的引用(然后丢弃它,因为你没有对它做任何事情)而不是而不是实际调用该函数。

要修复它,只需在函数名称后附加一对括号:

setTimeout( "after3sec()", 3000 );

或者,更好的是,按照 gdoron 的建议,将函数引用直接传递给 setTimeout:

setTimeout( after3sec, 3000 );

事实上,您甚至可以完全不使用单独的函数来完成:

function CheckJava() {
timerID = setTimeout( function () {
window.location = "intro1.html";
}, 3000 );
}

或者,使用字符串样式:

function CheckJava() {
timerID = setTimeout( 'window.location = "intro1.html";', 3000 );
}

关于javascript - 这里的细微错误是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14113328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com