BOM、DOM、事件监听
BOM
概念:Browser Object Model
浏览器对象模型,允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象
组成:
Window:浏览器窗口对象
Navigator :浏览器对象
Screen:屏幕对象
History:历史记录对象
Location:地址栏对象
Window:浏览器窗口对象
获取:直接使用window,其中window可省略
eg: window.alert("Hello"); --> alert("Hello");
属性:
history:对History对象的只读引用
location:用于窗口或框架的Location对象
navigator:对Navigator对象的只读引用
方法:
alert(); 显示带有一段消息和一个确认按钮的警告框
confirm(); 显示带有一段消息以及确认按钮和取消按钮的对话框
返回值 true/false
setInterval(); 按照指定的周期(以毫秒计)来调用函数或计算表达式
setTimeout(); 在指定的毫秒数后调用函数或计算表达式
例:
延迟___后执行 setTimeout(function(){ alert("JS"); },3000); (3000ms -->3s后执行且仅一次) 简写: setTime(()=>{ 执行代码块; },毫秒数); 周期性调用 var i = 1; setInterval(function(){ console.log("定时器执行了" + i + "次"); i++;}, 2000); (2000ms -->2s执行一次 简写: setInterval(()=>{ 执行代码块; },毫秒数);
注:在具体实践中发现:上面的setTimeout执行可打断下面setInterval周期性调用
(上面alert警告框弹出后,不点击按钮,则下面setInterval不会继续执行)
Location
介绍:地址栏对象
获取:使用window.location获取,其中window可省略
window.location.属性; == location.属性;
属性:
href:设置或返回完整的url
location.href = "https://www. ……”;(跳转到指定地址页面)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src = "../JS/vue.js"></script> </head> <body> <div id = "app"> <a v-bind:href="url">链接1</a> //属性值绑定 <a :href="url">链接2</a> <input type="text" v-model = "url"> //双向绑定 </div> </body> <script> new Vue({ el:"#app", //vue接管区域,双向数据绑定 data:{ url:"https://www.cnblogs.com/liushuosbkd2003/" //url在数据模型中的定义 } }) </script> </html>
以上代码执行后界面显示两个按钮,两个按钮指向同一网址。
<script></script>标签中用vue框架将文本框中的内容与按钮绑定(可修改文本框中的内容以达到使按钮跳转到其他网址的目的)
具体vue请看下节
DOM W3C的标准,定义了访问HTML和XML文档的标准
概念:Document Object Model,文档对象模型
将标记语言的各个组成部分封装为对应的对象
1、Core-DOM-所有文档类型的标准模型
Document:整个文档对象
Element: 元素对象(标签)
Attribute: 属性对象
Text: 文本对象
Comment: 注释对象
JavaScript通过DOM,就能够对HTML进行操作:
改变HTML元素的内容
改变HTML元素的样式
对HTML DOM 事件作出反应
添加和删除HTML元素(动态)
每一个标签都会被封装为一个element对象
HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的
Document对象中提供了以下获取Element元素对象的函数
1、根据id属性获取,返回单个Element对象
var h1 = document.getElementById('h1');
2、根据标签名获取返,返回Element对象数组
var divs = document.getElementByTagName('div');
3、根据name属性值获取,返回Element对象数组
var hobbys = document.getEElementByName('hobby');
4、根据class属性值获取,返回Element对象数组
var clss = document.getElementByClassName('cls');
element.InnerHTML 设置/返回元素的内容
element.checked = true; 复选框选定
2、XML DOM-XML文档的标准模型
3、HTML DOM-HTML文档的标准模型
Image :<img>
Button:<input type = 'button'>
JS事件监听
事件:HTML事件是发生在HTML元素上的“事情”
如:按钮被点击、鼠标的移入移出、键盘按键按下等
事件监听:JavaScript可以在事件被侦测到时执行代码
事件绑定
方式一:通过HTML标签中的事件属性进行绑定
<input type = "button" onclick = "on()" value = "按钮1">
<script>
function on(){ alert("我被点击了"); } </script> 方式二:通过DOM元素属性绑定 <input type = "button" id = "btn" value = "按钮2"> <script> document.getElementById('btn').onclick = function(){ alert("我被点击了"); } </script>
常见事件:
事件名 | 说明 |
onclick | 鼠标单机事件 |
onblur |
元素失去焦点 |
onfocus | 元素获得焦点 |
onload | 某个界面或图像被完成加载 |
onsubmit | 当表单提交时触发该事件 |
onkeydown | 某个键盘的按键被按下 |
onmouseover | 鼠标被移动到某元素上 |
onmouseout | 鼠标从某元素移开 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src ="../JS/vue.js"></script> </head> <body> <div id = "app"> <input type="button" value = "按钮" v-on:click = "hand()"> <input type="button" value = "按钮" @click = "hand()"> </div> </body> <script> //点击 new new Vue({ el:"#app", data:{ }, methods:{ hand : function(){ alert("我被点了一下") } } }) </script> </html>
以上代码执行后,按钮被点击后,即刻弹出警告框并输出内容
本文来自博客园,作者:suN(小硕),转载请注明原文链接:https://www.cnblogs.com/liushuosbkd2003/p/17783754.html