javascript--BOM对象

BOM对象(浏览器对象模型)

主要是应用浏览器窗口的交互对象

窗口加载 window.onload = function(){}

文档内容全部加载才会触发事件(包括 文字 图像 脚本)

注意:只能写一次,多个onload只以第一个为准

同样可以用事件监听来代替

window.addEventListener(‘load’,function(){}) 不限制个数

定时器 setTimeout() setTimeval()

停止定时器 clearTimeout(timeoutName)

		<button type="button">点击停止</button>
		<script type="text/javascript">
			//里面的函数同样可以调用外部函数
			//时间单位为毫秒,省略的时候默认为0
			//页面中有很多定时器,需要加标识符区别出来
			var timer = setTimeout(function(){
				console.log('time out');
			},4000);
			var btn = document.querySelector('button');
			//清除定时器是一定要带 定时器的名字
			btn.addEventListener('click',function(){
				clearTimeout(timer);
				console.log('ss')
			})
		</script>

间接定时器 setInterval(回调函数,间隔的时间)

每间隔多少秒就调用一次这个函数。【重复调用这个函数】

用例:倒计时功能

				var hour = document.querySelector('#hour');
				var min = document.querySelector('#min');
				var sec = document.querySelector('#sec');
				var inputTime = +new Date('2021-3-12 00:00:00');		//初始化 时间的毫秒
				cutDown();	//这里有个细节就是,先执行一下这个倒计时函数,才不会把初始值带到里面去
				setInterval(cutDown,1000)	//没一秒钟执行一次cutDown函数
				function cutDown(time){
					var nowTime = +new Date();		//当前时间的毫秒
					var times = (inputTime - nowTime)/1000;		//得到差值的总秒数
					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;
					min.innerHTML = m;
					var s = parseInt(times % 60);			//得到秒钟
					s = s < 10 ? '0' + s : s;
					sec.innerHTML = s;
				}

清除间接计时器 clearInterval(计时器名称)

		<button type="button" id="begin">开始计时</button>
		<button type="button" id="end">结束计时</button>
		<script type="text/javascript">
			var begin = document.querySelector('#begin');
			var end = document.querySelector('#end');
			var timer = null;	//定义一个计时器,复制一个空的全局对象
			begin.addEventListener('click',function(){
				timer = setInterval(function(){		//不能再函数内部定义计时器的名称(会导致外部函数无法访问)
					console.log('计时中');
				},1000);
			});
			end.addEventListener('click',function(){
				clearInterval(timer);	//结束几时需要传入,计时器的名称
			})
		</script>

短信发送实例

		发送短信<input type="text" id="input" /><button type="button" id="btn">发送</button>
		<script type="text/javascript">
			var btn = document.querySelector('#btn');
			var time = 3;	//这是定义倒计时的时间
			btn.addEventListener('click',function(){
				btn.disabled = true;	//设置按钮不能禁止按
				var timer = setInterval(function(){
					if(time == 0){		//当时间为0时开始计时
						btn.disabled = false;
						clearInterval(timer);	//这里清除计时器
						btn.innerHTML = '发送';
						time = 3;
					}else{
						btn.innerHTML = '还剩下' + time +'秒';
						time --;
						
					}
				},1000);
			})
		</script>

this指向的对象

全局this

全局的this 指向的是window【定时器里的this也指向window】

方法里的this 指向调用者【谁调用方法指向谁】

构造函数里的this指向构造函数的实例

function Fun(){
	console.log(this);	//this指向的是fun  (它是一个实例对象)
}
var fun = new Fun();

js的运行机制(同步&异步)

同步

前一个任务执行完毕之后再执行下一个任务,程序执行的顺序是一致的,按着顺序执行下去

异步

在做一件事的时候需要花很长时间,这是可以在做这件事的同时,去做其他的事情。

js的异步是通过回调函数实现的。一般而言,异步任务有一下三种类型:

  • 普通事件,如 click、resize等
  • 资源加载 , 如 load error 等
  • 定时器 ,如 setInterval 、setTimeout

异步函数是放在消息队列当中

javascript--BOM对象

执行机制

先执行,执行栈里面的同步任务 =》 再把异步任务放到消息队列 =》 继续执行同步任务 =》异步任务放到主线程最底执行

Location对象

location属性用于获取或者设置窗体的URL,并且可以用于解析URL

…(img-BwBOURbS-1615969296606)]

执行机制

先执行,执行栈里面的同步任务 =》 再把异步任务放到消息队列 =》 继续执行同步任务 =》异步任务放到主线程最底执行

Location对象

location属性用于获取或者设置窗体的URL,并且可以用于解析URL

location.href = ‘www.baidu.com’ 【实现页面跳转效果】

上一篇:Codeforces 2018-2019 ICPC, NEERC, Southern Subregional Contest


下一篇:ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering