Using setInterval with $(document).ready

Using setInterval with $(document).ready

本文关键字:document ready setInterval with Using      更新时间:2023-09-26

我试图在加载html页面后调用一个函数。它的工作很好,我希望函数每3秒后被调用,因此插入setInterval()为它。但是函数根本没有被调用。是否有任何问题的语法setInterval()..?

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
<script>
$(document).ready( setInterval(function(){f()},3000); );
function f()
{
xhttp=new XMLHttpRequest();
xhttp.open("GET","/anu/get.php",true);
xhttp.send();
xhttp.onreadystatechange = function(){
if(xhttp.readyState==4){
var Display = document.getElementById('new');
Display.innerHTML = xhttp.responseText;
}
}
}
</script>
</head>
<body>
<p id="new"> </p>
<body>
</html>

应该是:

$(document).ready(function () {
  setInterval(function(){f()},3000);
});

这里的问题是setInterval返回一个数字,而将一个数字传递给$(document).ready(...)什么也不做。相反,您需要向$(document).ready(...)传递一个函数,例如启动setInterval调用的函数。

另一个问题是,您在setInterval之后包含了一个分号,但是分号只对语句有效(您可以将其视为"站在自己一行上的东西")。您只能将表达式传递给setInterval等函数,并且表达式没有分号,因此在右括号之前的额外分号是错误的,因为JS引擎看到以分号结束的语句,它期望有一个无分号表达式。


你也可以把它缩短为

$(document).ready(function () {
  setInterval(f, 3000);
});

或者

$(function () {
  setInterval(f, 3000);
});