我试图在加载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>
答案 0 :(得分:4)
应该是:
$(document).ready(function () {
setInterval(function(){f()},3000);
});
这里的问题是setInterval
returns a number,并且将数字传递给$(document).ready(...)
什么都不做。相反,您需要传递$(document).ready(...)
一个函数,例如以setInterval
调用开始的函数。
另一个问题是你在setInterval
之后加了一个分号,但是分号只对语句有效(你可以认为它们是“站在他们自己的行上的东西”)。你只能将表达式传递给像setInterval
这样的函数,并且表达式没有分号,所以在右括号之前你的额外分号是一个错误,因为JS引擎看到一个以分号结尾的分号它希望存在无分号表达式的语句。
此外,您可以将其简化为
$(document).ready(function () {
setInterval(f, 3000);
});
甚至
$(function () {
setInterval(f, 3000);
});