Window setInterval() 方法
实例
每隔 3 秒(3000 毫秒)弹出 "Hello" 的警告消息框
<!DOCTYPE html>
<html>
<body>
<p>单击按钮等待 3 秒钟,然后弹出 "你好" 。</p>
<p>单击关闭消息框后,3 秒钟后将出现一个新的消息框。这将永远持续。。。</p>
<button onclick="myFunction()">试一试</button>
<script>
function myFunction() {
setInterval(function(){ alert("Hello"); }, 3000);
}
</script>
</body>
</html>
定义与用法
setInterval()
方法以指定的间隔(毫秒)调用函数或计算表达式。
setInterval()
方法将继续调用该函数,直到 clearInterval() 被调用,或窗口被关闭。
setInterval()
返回的 ID 值用作 clearInterval()
方法的参数。
提示: 1000 ms = 1 second.
提示: 要在指定的毫秒数后仅执行一次函数,请使用 setTimeout() 方法。
浏览器支持
表中的数字指定完全支持该方法的第一个浏览器版本。
方法 | |||||
---|---|---|---|---|---|
setInterval() | 1.0 | 4.0 | 1.0 | 1.0 | 4.0 |
语法
setInterval(function, milliseconds, param1, param2, ...)
参数值
参数 | 描述 |
---|---|
function | 必填。将要执行的函数 |
milliseconds | 必填。 执行代码的频率间隔(毫秒)。如果值小于 10,则使用 10 |
param1, param2, … | 可选。function 函数的附加参数 (IE9 及更早版本不支持) |
技术细节
返回值: | 一个数字,表示设置的计时器的ID值。将此值与 clearInterval() 方法一起使用可取消计时器 |
---|
更多实例
实例
您还可以引用 "named" 函数;每 3 秒(3000 毫秒)弹出 "Hello":
<!DOCTYPE html>
<html>
<body>
<p>点击按钮等待 3 秒弹出 "Hello"</p>
<p>单击关闭消息框后,3 秒钟后将出现一个新的消息框。这将永远持续。。。</p>
<button onclick="myFunction()">试一试</button>
<script>
var myVar;
function myFunction() {
myVar = setInterval(alertFunc, 3000);
}
function alertFunc() {
alert("Hello!");
}
</script>
</body>
</html>
实例
显示当前时间(setInterval() 方法将每1秒执行一次函数,就像数字手表一样):
<!DOCTYPE html>
<html>
<body>
<p>此页上的脚本启动此时钟:</p>
<p id="demo">
<script>
var myVar = setInterval(myTimer, 1000);
function myTimer() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
</script>
</body>
</html>
实例
在上一个示例中使用 clearInterval() 停止时间:
<!DOCTYPE html>
<html>
<body>
<p>此页上的脚本启动此时钟:</p>
<p id="demo">
<button onclick="myStopFunction()">停止</button>
<script>
var myVar = setInterval(myTimer, 1000);
function myTimer() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
function myStopFunction() {
clearInterval(myVar);
}
</script>
</body>
</html>
实例
使用 setInterval() 和 clearInterval() 创建动态进度条:
<!DOCTYPE html>
<html>
<style>
#myProgress {
width: 100%;
height: 30px;
position: relative;
background-color: #ddd;
}
#myBar {
background-color: #4CAF50;
width: 10px;
height: 30px;
position: absolute;
}
</style>
<body>
<div id="myProgress">
<div id="myBar"></div>
</div>
<br>
<button onclick="move()">点击这里</button>
<script>
function move() {
var elem = document.getElementById("myBar");
var width = 0;
var id = setInterval(frame, 10);
function frame() {
if (width == 100) {
clearInterval(id);
} else {
width++;
elem.style.width = width + '%';
}
}
}
</script>
</body>
</html>
实例
每 300 毫秒在两种背景色之间切换一次:
<!DOCTYPE html>
<html>
<body>
<p>在本例中,setInterval() 方法每 300 毫秒执行一次 setColor() 函数,该函数将在两种背景色之间切换。</p>
<button onclick="stopColor()">停止切换</button>
<script>
var myVar = setInterval(setColor, 300);
function setColor() {
var x = document.body;
x.style.backgroundColor = x.style.backgroundColor == "yellow" ? "pink" : "yellow";
}
function stopColor() {
clearInterval(myVar);
}
</script>
</body>
</html>
实例
将参数传递给 alertFunc 函数(在 IE9 及更早版本中不起作用):
<!DOCTYPE html>
<html>
<body>
<p>单击开始按钮,每 2 秒弹出一次 "Hello" 。</p>
<p>在本例中,我们还输出了传递给 alertFunc() 函数的参数(在 IE9 和更早版本中不起作用)。</p>
<button onclick="myStartFunction()">开始</button> <button onclick="myStopFunction()">停止</button>
<p id="demo">
<p id="demo2" style="color:red;">
<script>
var myVar;
function myStartFunction() {
myVar = setInterval(alertFunc, 2000, "First parameter", "Second parameter");
}
function alertFunc(param1, param2) {
document.getElementById("demo").innerHTML += "Hello ";
document.getElementById("demo2").innerHTML = "参数传递到 alertFunc(): <br>"
+ param1 + "<br>" + param2 + "<br>";
}
function myStopFunction() {
clearInterval(myVar);
}
</script>
</body>
</html>
但是,如果使用一个匿名函数,它将在所有浏览器中工作:
<!DOCTYPE html>
<html>
<body>
<p>单击开始按钮,每 2 秒弹出一次 "Hello" 。</p>
<p>在本例中,我们还输出了传递给 alertFunc() 函数的参数(在 IE9 和更早版本中不起作用)。</p>
<button onclick="myStartFunction()">开始</button> <button onclick="myStopFunction()">停止</button>
<p id="demo">
<p id="demo2" style="color:red;">
<script>
var myVar;
function myStartFunction() {
myVar = setInterval(function(){ alertFunc("First parameter", "Second parameter"); }, 2000);
}
function alertFunc(param1, param2) {
document.getElementById("demo").innerHTML += "Hello ";
document.getElementById("demo2").innerHTML = "参数传递到 alertFunc(): <br>"
+ param1 + "<br>" + param2 + "<br>";
}
function myStopFunction() {
clearInterval(myVar);
}
</script>
</body>
</html>
相关页面
Window 对象: clearInterval() 方法
Window 对象: setTimeout() 方法
Window 对象: clearTimeout() 方法