JavaScript BOM-对象
顶级对象window
常见的加载事件
- onload 当文档全部加载完成会触发(包括图像、脚本文件、CSS 文件等); 传统注册方式只能写一个,多个以最后一个为准;如果使用addEventListener则没有限制
- DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。
<script> // 第一种 window.onload = function () { alert('111') }; window.addEventListener('load', function () { alert('222') }); // 不影响 document.addEventListener('DOMContentLoaded', function() { alert(33); // 不加载图片等 }) </script>
定时器
- setTimeout() 只执行一次
- setInterval() 反复执行
setTimeout() 定时器
开启定时器
- window.setTimeout(调用函数, [延迟毫秒数])
<script> function callback() { console.log('111'); } var tinner1 = setTimeout(callback, 2000); var tinner2 = setTimeout(callback, 3000); </script>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <img src="ad.jpg" alt="" class="ad"> <script> var img = document.querySelector('.ad'); setTimeout(function () { img.style.display = 'none'; },2000) </script> </body> </html>
停止定时器
- clearTimeout(TimeoutID)
<button>关闭定时器</button> <script> var timer = setTimeout(function () { console.log('111'); }, 1000); var btn = document.querySelector('button'); btn.addEventListener('click', function () { clearTimeout(timer) }) </script>
setInterval() 定时器
开启定时器
- window.setInterval(调用函数, [延迟毫秒数])
停止定时器
- clearInterval(TimeoutID)
<button>关闭定时器</button> <script> var timer = setInterval(function () { console.log(111); }, 1000); var btn = document.querySelector('button'); btn.onclick = function () { clearInterval(timer) // 关闭定时器 } </script>
注意:
- 第一次执行间隔毫秒之后执行,所有最好执行一次封装的函数,防止开始刷新页面的空白问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> div { margin: 200px; } span { display: inline-block; width: 40px; height: 40px; background-color: #333; font-size: 20px; color: #fff; text-align: center; line-height: 40px; } </style> </head> <body> <div> <span class="hour">1</span> <span class="minute">2</span> <span class="second">3</span> </div> <script> // 1. 获取元素 var hour = document.querySelector('.hour'); // 小时的黑色盒子 var minute = document.querySelector('.minute'); // 分钟的黑色盒子 var second = document.querySelector('.second'); // 秒数的黑色盒子 var inputTime = +new Date('2020-3-18 18:00:00'); // 返回的是用户输入时间总的毫秒数 countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白 // 2. 开启定时器 setInterval(countDown, 1000); function countDown() { var nowTime = +new Date(); // 返回的是当前时间总的毫秒数 var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数 var h = parseInt(times / 60 / 60 % 24); //时 h = h < 10 ? '0' + h : h; hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子 var m = parseInt(times / 60 % 60); // 分 m = m < 10 ? '0' + m : m; minute.innerHTML = m; var s = parseInt(times % 60); // 当前的秒 s = s < 10 ? '0' + s : s; second.innerHTML = s; } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 手机号码:<input type="number"> <button>发送</button> <script> var btn = document.querySelector('button'); var time = 30; btn.addEventListener('click', function () { btn.disabled = true; // 这里防止用户多次点击 var inner = setInterval(function () { if (time == 0){ btn.disabled = false; // 清除定时器 clearInterval(inner); btn.innerHTML = '发送' } else { btn.innerHTML = time + '秒'; time-- } }, 1000) }) </script> </body> </html>
location 对象
对象属性:
重点:href和search
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <button>点击</button> <div></div> <script> var btn = document.querySelector('button'); var div = document.querySelector('div'); // 点击跳转页面 btn.addEventListener('click', function () { location.href = 'http://www.baidu.com' }); // 倒计时跳转 var time = 5; var timeer = setInterval(function () { if (time == 0) { clearInterval(timeer); location.href = 'http://www.baidu.com' } else { div.innerHTML = time + '秒后跳转页面'; time--; } }, 1000) </script> </body> </html>
常见方法:
<button>点击</button> <script> var btn = document.querySelector('button'); btn.addEventListener('click', function () { // location.assign('http://www.baidu.com') // 记录浏览历史,所以可以实现后退功能 // location.replace('http://www.baidu.com') // 不记录浏览历史,不能后退 location.reload(true); // 刷新页面 }) </script>
相关资料: https://github.com/1515806183/html-code/tree/master/wapapi-02