效果展示
HTML
<div id="circle"> 点击开始,开始抽奖 </div> <button id="btn">开始</button>
JS
定义数组等
var arr = ["iPhoneX", "平衡车","洗衣机","鞠婧祎","邓紫棋","抽纸一包","电吹风","行李箱","兰博基尼","一百万现金","遥控车","波音747","印度7日游","小爱同学","笔记本电脑","洗发水","泡面一箱","拼多多助力","女朋友一个","回到过去","香槟","一句话","一个拥抱","一个眼神","一支笔"]; var result = document.getElementById("circle"); //结果展示 var btn = document.getElementById("btn"); // 开始按钮 var count = 0; //点击次数
setInterval(),clearInterval()
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数
btn.onclick = function() { count++; //每点击一次btn按钮,count自增一次 if (count % 2 != 0) { btn.innerText = "暂停"; //点击次数为 奇数 时,按钮显示为暂停 timer = setInterval(function() { var i = Math.round(Math.random() * (arr.length - 1)); //随机获取下标i,范围0 ~ arr.length-1 result.innerText = arr[i] //将随机选中的元素,输出到result上 }, 1) //每 一毫秒 调用一次函数 } else { clearInterval(timer); //再次点击count自增加 1,执行else,停止timer的setInterval() btn.innerText = "开始"; //改变按钮显示为开始 } }
setInterval()的应用
bug:加载过程中再点击按钮,会再调用函数,导致来回闪烁情况。
解决方案:暂无 2021/6/13
效果图
JS
function move() { var elem = document.getElementById("myBar"); var hp = document.getElementsByTagName("h1")[0]; var width = 0; var id = setInterval(frame, 100); //每100毫秒执行一次frame函数 function frame() { if (width == 100) { //当width为100时,停止 id clearInterval(id); } else { width++; elem.style.width = width + '%'; //给elem元素添加css样式 宽度width hp.innerText = width+'%'; //将当前宽度输出到 hp 上 } } }
源码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>进度条</title> </head> <style> #myProgress { width: 100%; height: 30px; position: relative; background-color: #ddd; } #myBar { background-color: #4CAF50; width: 1px; 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 hp = document.getElementsByTagName("h1")[0]; var width = 0; var id = setInterval(frame, 100); function frame() { if (width == 100) { clearInterval(id); } else { width++; elem.style.width = width + '%'; hp.innerText = width+'%'; } } } </script> </body> </html>