Reputation: 145
Am trying to invoke a function after the loading of the html page. Its working fine and I want the function to be invoked after every 3 seconds and hence inserted the setInterval() for it. But the function is not at all getting called. Is there any problem with the syntax of 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>
Upvotes: 0
Views: 6286
Reputation: 112917
It should be:
$(document).ready(function () {
setInterval(function(){f()},3000);
});
The problem here is that setInterval
returns a number, and passing a number to $(document).ready(...)
does nothing. Instead, you need to pass $(document).ready(...)
a function, such as a function that starts off the setInterval
call.
The other problem is that you included a semicolon after the setInterval
, but semicolons are only valid on statements (which you can think of as "things that stand on their own line"). You can only pass expressions to functions like setInterval
, and expressions don't have semicolons, so your extra semicolon before the closing parenthesis is an error, because the JS engine sees a semicolon-terminated statement where it expects there to be a no-semicolon expression.
Also, you can shorten this to just
$(document).ready(function () {
setInterval(f, 3000);
});
or even
$(function () {
setInterval(f, 3000);
});
Upvotes: 4