2014-05-04 120 views
0

我试图在加载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> 
+2

'的setInterval(函数(){F()},3000);'是一个很长的啰嗦的说法:'setInterval(f,3000);' – Quentin

回答

4

它应该是:

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

的这里的问题是,setIntervalreturns a number,并通过一个数字来$(document).ready(...)什么都不做。相反,您需要通过$(document).ready(...)函数,例如以setInterval调用开始的函数。

另一个问题是,你在setInterval后面加了一个分号,但分号只对语句有效(你可以把它看作“站在他们自己的行上的东西”)。你只能通过表达到功能,如setInterval和表达式没有分号,所以右括号之前,你多余的分号是错误的,因为JS引擎看到一个分号终止的声明,其中,预计那里是一个没有 - 分号表达。


此外,您还可以缩短这只是

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

甚至

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

谢谢你工作:) – Anuraag