持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
setTimeout()(炸弹:只执行一次)
setTimeout() 的调用函数我们也称为回调函数 callback,定时器到期后执行
开启定时器:setTimeout(调用函数, [延迟的毫秒数]);
如果延迟的毫秒数省略,默认取 0,意味着马上执行
停止定时器:clearTimeout(timeoutID)
定时器可能有很多,所以我们经常给定时器赋值一个标识符,该标识符(timeoutID)是一个正整数
小案例:实现文字打字机效果
- 将需要展示的文本切割成一个个单个字符;
- 定义一个加入文字容器中的文字索引(index),根据这个索引使用定时器setTimeout()方法向文字容器中追加文字;
- 可以使用::after伪元素和CSS3动画属性(animation)实现文字输入的光标闪烁的效果
const content = document.querySelector('.content');
const words = '不管我们几岁了,儿童节那天都请对自己说一句“嘿,儿童节快乐!”。';
//split() 方法使用指定的分隔符字符串将字符串转化为字符串数组,如果分隔符为空字符串,则将原字符串中每个字符的以数组形式返回
const wordsArray = words.split('');
let index = 0;
function typewriter(){
if (index < wordsArray.length){
content.innerHTML += wordsArray[index];
index++;
setTimeout(typewriter,300)
}
}
typewriter()
setInterval() (闹钟:重复执行)
setInterval() 方法重复调用一个函数,每隔一个规定的时间间隔,就去调用一次。
开启定时器:setInterval(回调函数, [间隔的毫秒数]);
如果间隔的毫秒数省略,默认取0,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。
停止定时器:
clearInterval(intervalID);
intervalID是setInterval()建立的定时器的标识符,是一个非零数值
小案例:获取验证码倒计时
- 点击获取验证码按钮,首先需要判断手机号是否填写及是否正确;
- 设置一个倒计时60s,使用定时器setInterval()方法让倒计时每隔1秒,自减;如果倒计时等于0,就清除定时器;
- 获取验证码按钮使用的button标签,使用disabled属性控制按钮是否禁用
codeBtn.addEventListener('click', function () {
if (!checkRequired([phone])) {
checkTel(phone);
codeBtn.disabled = true;
let seconds = 60;
let intervalID = setInterval(() => {
seconds--;
if (seconds !== 0) {
codeBtn.innerHTML = seconds + "s后重发";
} else {
clearInterval(intervalID)
codeBtn.innerHTML = "发送验证码";
codeBtn.disabled = false;
}
}, 1000);
}
})