定义和用法
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
提示: 1000 毫秒= 1 秒。
提示: 如果你只想执行一次可以使用 setTimeout() 方法。
所有主要浏览器都支持 setInterval() 方法
语法
setInterval(code, milliseconds);
setInterval(function, milliseconds, param1, param2, ...)
参数 | 描述 |
---|---|
code/function | 必需。要调用一个代码串,也可以是一个函数。 |
milliseconds | 必须。周期性执行或调用 code/function 之间的时间间隔,以毫秒计。 |
param1, param2, … | 可选。 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)。 |
技术细节
返回值: | 返回一个 ID(数字),可以将这个ID传递给clearInterval(),clearTimeout() 以取消执行。 |
---|
实例
DEMO1:每三秒(3000 毫秒)弹出 “Hello” 。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>点击按钮,等待 3 秒会弹出 "Hello"。</p> <p>在弹出的对话框中点击 "确定", 3 秒后会继续弹出。如此循环下去...</p> <button onclick="myFunction()">点我</button> <script> function myFunction() { setInterval(function(){ alert("Hello"); }, 3000); } </script> </body> </html>
DEMO2:使用一个代码字符串。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>点击按钮,等待 3 秒会弹出 "Hello"。</p> <p>在弹出的对话框中点击 "确定", 3 秒后会继续弹出。如此循环下去...</p> <button onclick="myFunction()">点我</button> <script> function myFunction() { setInterval('alert("Hello");', 3000); } </script> </body> </html>
DEMO3:你可以通过调用一个已命名的函数,每三秒(3000 毫秒)弹出 “Hello”。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <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>
DEMO4:显示当前时间( setInterval() 方法会每秒执行一次函数,类似手表功能)。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>显示当前时间:</p> <p id="demo"></p> <script> var myVar = setInterval(function(){ myTimer() }, 1000); function myTimer() { var d = new Date(); var t = d.toLocaleTimeString(); document.getElementById("demo").innerHTML = t; } </script> </body> </html>
DEMO5:使用 clearInterval() 来停止 setInterval 的执行。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>显示当前时间:</p> <p id="demo"></p> <button onclick="myStopFunction()">停止时间</button> <script> var myVar = setInterval(function(){ myTimer() }, 1000); function myTimer() { var d = new Date(); var t = d.toLocaleTimeString(); document.getElementById("demo").innerHTML = t; } function myStopFunction() { clearInterval(myVar); } </script> </body> </html>
DEMO6:使用 setInterval() 和 clearInterval()来创建动态进度条。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <style> #myProgress { width: 100%; height: 30px; position: relative; background-color: #ddd; } #myBar { background-color: #4CAF50; width: 10px; height: 30px; position: absolute; } </style> <body> <h1>JavaScript 进度条</h1> <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>
DEMO7:每 300 毫秒切换背景颜色。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>以下实例中,setInterval() 方法每 300 毫秒执行 setColor() 函数 ,该函数可以切换背景颜色。</p> <button onclick="stopColor()">停止切换</button> <script> var myVar = setInterval(function(){ setColor() }, 300); function setColor() { var x = document.body; x.style.backgroundColor = x.style.backgroundColor == "yellow" ? "pink" : "yellow"; } function stopColor() { clearInterval(myVar); } </script> </body> </html>
DEMO8:传递参数给 alertFunc 函数 ( IE9 及其更早版本不支持)。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>点击按钮每 2 秒输出 "Hello"。</p> <p>实例中,我们也会输出传递给 alertFunc() 函数的参数 ( IE9 及更早版本不支持 )。</p> <button onclick="myStartFunction()">开始</button> <button onclick="myStopFunction()">停止</button> <p id="demo"></p> <p id="demo2" style="color:red;"></p> <script> var myVar; function myStartFunction() { myVar = setInterval(alertFunc, 2000, "Web176", "Google"); } 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>
DEMO9:但是,如果使用匿名函数,则所有浏览器都支持。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>点击按钮每 2 秒输出 "Hello"。</p> <p>实例中,我们也会输出传递给 alertFunc() 函数的参数 ( 兼容所有浏览器 )。</p> <button onclick="myStartFunction()">开始</button> <button onclick="myStopFunction()">停止</button> <p id="demo"></p> <p id="demo2" style="color:red;"></p> <script> var myVar; function myStartFunction() { myVar = setInterval(function(){ alertFunc("Web176", "Google"); }, 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>
作者:terry,如若转载,请注明出处:https://www.web176.com/javascriptbook/brtips/3742.html