从零到一学JS:五秒自动跳转百度

377 阅读1分钟

每日一kun:你眼里的星星只让我一个人看,好吗?

利用location对象的href方法实现自动跳转和立即跳转,代码如下:

js代码
    var p = document.querySelector("p")
    var btn = document.querySelector("button")
    var time = 5
    btn.addEventListener("click", function () {
        location.href = "https://wwww.baidu.com"
    })
    var timeout = function () {

        if (time == 0) {
            location.href = "https://wwww.baidu.com"
        } else {
            p.innerHTML = "你将在" + time + "秒后跳转百度"
            time--
        }
    }
    setInterval(timeout, 1000)
    timeout()
    
html代码
    <p></p>
    <button>点击立即跳转百度</button>

结果

2022-11-13-21-49-22.gif

Bug:定时器要写在函数后面,如果你用的是赋值函数,不然不会报错,开始是以为定时不会运行,但后来想想,如果你函数写在定时器后面,JS执行时,因为变量提升,导致函数为Null,然后js直接把这个Null函数放到异步线程等待区,等1s时间到,开始执行这个Null函数,因为函数是null,所以什么都不执行,但事件循环会导致这个空函数一直空转,消耗系统浏览器内存,但因为整个定时器从机器角度来说是正常的,所以控制台也不会报错,导致的结果就是一直不跳转到百度。