Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
303 views
in Technique[技术] by (71.8m points)

javascript - Using setInterval with $(document).ready

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>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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);
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...