<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button disabled>倒计时60秒</button>
<script>
let i=59
let a= setInterval(
function(){
if(i<0){
document.querySelector('button').disabled=false
document.querySelector('button').innerHTML=`同意该协议`
clearInterval(a)
}else{
document.querySelector('button').innerHTML=`倒计时${i}秒`
i--
}
}
,1000
)
</script>
</body>
</html>
在script下如果存在for循环是整个循环结束才去,拿渲染树进行渲染。第一次渲染是主线程结束。才进行渲染。for循环是在主线程内的。而定时器开启的另一个线程,也是等这个线程结束看最终的渲染树进行循环。定时器它是等一秒再执行。不是立刻在主线程内执行。if条件没写else下面的肯定执行。if只是判断这一段代码块是否执行。但是下面的还是一定会执行的。一开始一定是要写的。1s后执行的button下的下一个数。