btn的click事件,每次点击都会执行给定的function,如果function复杂的话,很容易消耗内存
解决方法——setTimeout延时处理。
给function做延迟处理,比如600毫秒后执行,如果在600毫秒内再次触发方法,则将之前的timeout清除。
关键代码:
let isr = false
let timer = null
let oBtn = document.getElementById('oBtn')
oBtn.onclick = function () {
if (isr) {
clearTimeout(timer)
} else {
isr = true
}
timer = setTimeout(function () {
console.log('change')
}, 600)
}
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width: 800px;
height: 500px;
overflow: auto;
margin: 20px auto;
background-color: #ccc;
border: 1px solid #ccc;
border-radius: 10px;
padding: 5px;
}
.btn{
width: 200px;
height: 50px;
line-height: 50px;
background-color: #f00;
margin: 20px auto;
text-align: center;
user-select: none;
color: #fff;
}
</style>
</head>
<body>
<div class='box'>
<div class='btn' id='oBtn'>click</div>
</div>
</body>
<script type='text/javascript'>
let isr = false
let timer = null
let oBtn = document.getElementById('oBtn')
oBtn.onclick = function () {
if (isr) {
clearTimeout(timer)
} else {
isr = true
}
timer = setTimeout(function () {
console.log('change')
}, 600)
}
</script>
</html>