BOM全称为“Browser Object Model”,浏览器对象模型。提供一系列操作浏览器的属性和方法。核心对象为window对象,不需要手动创建,跟随网页运行自动产生,直接使用,在使用时可以省略书写。
alert() //警告框
confirm() //确认框
周期性定时器
作用:每隔一段时间就执行一次代码
//开启定时器:
var timerID = setInterval(function,interval);
/*
参数 :
function : 需要执行的代码,可以传入函数名;或匿名函数
interval : 时间间隔,默认以毫秒为单位 1s = 1000ms
返回值 : 返回定时器的ID,用于关闭定时器
*/
关闭定时器 :
//关闭指定id对应的定时器
clearInterval(timerID);
一次性定时器
作用:等待多久之后执行一次代码
//开启超时调用:
var timerId = setTimeout(function,timeout);
//关闭超时调用:
clearTimeout(timerId);
<h1>时间练习</h1>
<script>
function addZero(num){
return num<10?'0'+num:num+'';
}
function countDown(){
var now = new Date();
var festival= new Date('2019/3/3 12:00:00');
var leftTime = parseInt((festival-now)/1000);
var h1 = document.getElementsByTagName('h1')[0];
if(leftTime<=0){
var html = '时间已经过去啦~';
h1.innerHTML = html;
console.log(1);
clearInterval(timer);//停止定时器
return //退出函数
}
var date_num = addZero(parseInt(leftTime/(3600*24)));
var hour = addZero(parseInt(leftTime/3600 % 24));
var minute = addZero(parseInt(leftTime/60 % 60));
var second = addZero(leftTime % 60);
var html = `${date_num}天${hour}时${minute}分${second}秒`;
h1.innerHTML = html;
}
countDown();
// 周期性定时器 1秒钟执行一次函数
var timer = setInterval(countDown,1000);//ID
</script>
window的大部分属性又是对象类型
作用:保存当前窗口所访问过的URL
属性 : length 表示当前窗口访问过的URL数量
方法 :
back() 对应浏览器窗口的后退按钮,访问前一个记录
forward() 对应前进按钮,访问记录中的下一个URL
reload(param) 重载页面(刷新)
参数为布尔值,默认为 false,表示从缓存中加载,设置为true,强制从服务器根目录加载
DOM全称为 “Document Object Model”,文档对象模型,提供操作HTML文档的方法。(注:每个html文件在浏览器中都视为一篇文档,操作文档实际就是操作页面元素。)
JavaScript 会对 html 文档中的元素、属性、文本甚至注释进行封装,称为节点对象,提供相关的属性和方法。
标签属性都是元素节点对象的属性,可以使用点语法访问,例如:
h1.id = "d1"; //set 方法
console.log(h1.id); //get 方法
h1.id = null; //remove 方法
注意 :
p.style.color = "white";
p.style.width = "300px";
p.style.fontSize = "20px";
注意 :
BOM.html
<style>
#a{
color: blue;
text-decoration: underline;
}
#a:hover{
cursor: pointer;
}
#a:active{
color: red;
}
</style>
</head>
<body>
<button id="btn1">前进</button>
<button id="btn2">后退</button>
<a href="history1.html">history1</a>
<span id="a">Tmooc</span>
<script>
var a = document.getElementById('a');
a.onclick =function(){
console.log(location.href)
location.href = 'http://www.baidu.com';
}
console.log(history.length);
var btn1 = document.getElementById('btn1');
var btn2 = document.getElementById('btn2');
btn1.onclick = function(){
history.forward()
}
btn2.onclick = function(){
history.back()
}
// var res = confirm('确定要删除么');
// console.log(res);
// function sayHello(){
// // console.log('hello world');
// alert('hello world');
// }
// // 周期定时器
// setInterval(sayHello ,1000);
// setInterval(function(){
// alert('hello world');
// },1000)
// 练习 完成端午节倒计时操作
// 将之前的代码封装到函数中 使用周期性定时器调用函数
// setTimeout(function(){
// alert('你好')
// },5000)
</script>
history1.html
<h1>
This is page 1
</h1>
<a href="history2.html">history2</a>
<script>
console.log(history.length)
</script>
history2.html
<h1>
This is page2
</h1>
<a href="BOM.html">BOM</a>
<script>
console.log(history.length)
</script>
实现手动与定时器轮播功能
<title>Document</title>
<style>
#silder{
width: 739px;
height: 419px;
position: relative;
}
/* 大图片 */
#silder>img{
position: absolute;
left: 0;
top: 0;
opacity: 0;
transition: all 0.5;
}
#silder>img.item.active{
opacity: 1;
}
/* 左右小按钮 */
#silder>.cart>img{
position: absolute;
top:50%;
margin-top: -20px;
}
.left{
left: 0;/*元素定位在左侧*/
}
.right{
right: 0;/*元素定位在右侧*/
}
</style>
</head>
<body>
<div id="silder">
<!-- -->
<img class="active" src="imgs/bg01.jpg" alt="">
<img class="item" src="imgs/bg02.jpg" alt="">
<img class="item" src="imgs/bg03.jpg" alt="">
<img class="item" src="imgs/bg04.jpg" alt="">
<img class="item" src="imgs/bg05.jpg" alt="">
<div class="cart">
<img class="left" src="imgs/logo.png" alt="">
<img class="right" src="imgs/logo2.png" alt="">
</div>
</div>
<script>
// 左侧按钮
var left_btn = document.getElementsByClassName('left')[0];
// 右侧按钮
var right_btn = document.getElementsByClassName('right')[0];
//默认显示的是第一张图片
var i = 0
//找图片
var items = document.getElementsByClassName('item')
console.log(items)
// v1.0 手动
// 点击左侧按钮时
// 将第一个图片的active类取消 给第五个图片加active
// 将第五个图片的active类取消 给第四个图片加active
// ...
// 点击右侧按钮时
// 将第一个图片的active类取消 给第二个图片加active
// 将第二个图片的active类取消 给第三个图片加active
// ...
// 将第五个图片的active类取消 给第一个图片加active
left_btn.onclick = function(){
items[i].className = 'item';//去掉当前的图片active
i--;
if(i<0){
i = items.length-1;//最后一张图的索引值
}
items[i].className = "item active";//将找到的图片添加active
}
right_btn.onclick = function(){
items[i].className = 'item';//去掉当前的图片active
i++;//找下一个图片的索引
if(i==items.length){//最后一张图递增变成第一张图
i = 0;
}
items[i].className = "item active";//将找到的图片添加active
}
right_btn.onclick = function(){
items[i].className = 'item';//去掉当前的图片active
i++;//找下一个图片的索引
if(i==items.length){//最后一张图递增变成第一张图
i = 0;
}
items[i].className = "item active";//将找到的图片添加active
}
// v2.0自动
//将右侧按钮点击功能直接交给定时器
var timer = setInterval(right_btn.onclick,1500)
var silder = document.getElementById('silder');
// 创建定时器 执行(点击右侧按钮)函数
// 鼠标移入停止定时器
// 鼠标移出启动定时器
//当鼠标移入到silder上停止定时器
silder.onmouseover = function(){
clearInterval(timer)
}
//当鼠标移出silder启动定时器
silder.onmouseout = function(){
// 新启动的定时器的id要保存在全局 供停止定时器的函数使用
timer = setInterval(right_btn.onclick,1500)
}
</script>
<div id="div1"></div>
<script>
//方法1
// document.getElementById('div1').innerHTML = 'hello world';
//方法2
// var div = document.getElementById('div1');
// div.innerHTML = 'hello world';
// 方法3
// 封装id函数
function $(id){
return document.getElementById(id)
}
$('div1').innerHTML = 'hello world'
</script>