第⑦周作业

DOM&BOM

source:文档对象模型——DOM 是 W3C(万维网联盟)的标准。是W3C组织推荐的处理可扩展标志语言的标准编程接口。DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为在JavaScript与JScript一决生死,于是大规模的赋予浏览器强大的功能。W3C DOM 标准被分为3个不同的部分:
核心DOM-针对任何结构化文档的标准模型
XML DOM-针对XML文档的标准模型
HTML DOM-针对HTML文档的标准模型

methods:HTML DOM 允许 JavaScript 对 HTML 事件作出反应。

对事件做出反应:

当事件发生时,可以执行 JavaScript,比如当用户点击一个 HTML 元素时。

如需在用户点击某个元素时执行代码,请把 JavaScript 代码添加到 HTML 事件属性中:

HTML 事件的例子:

  • 当用户点击鼠标时
  • 当网页已加载时
  • 当图片已加载时
  • 当鼠标移动到元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时
  • 当用户触发按键时

onload 和 onunload 事件

当用户进入或离开页面时,会触发 onload 和 onunload 事件。

onload 事件可用于检查访客的浏览器类型和版本,以便基于这些信息来加载不同版本的网页。

onload 和 onunload 事件可用于处理 cookies。

onchange 事件

onchange 事件onchange 事件常用于输入字段的验证。

onmouseover 和 onmouseout 事件

onmouseover 和 onmouseout 事件可用于在鼠标指针移动到或离开元素时触发函数。

onmousedown、onmouseup 以及 onclick 事件

onmousedown、onmouseup 以及 onclick 事件是鼠标点击的全部过程。首先当某个鼠标按钮被点击时,触发 onmousedown 事件,然后,当鼠标按钮被松开时,会触发 onmouseup 事件,最后,当鼠标点击完成时,触发 onclick 事件。

contents:

改变 HTML 内容改变元素内容的最简单的方法是使用 innerHTML 属性。

改变 HTML 样式通过 HTML DOM,您能够访问 HTML 对象的样式对象。

使用事件

HTML DOM 允许您在事件发生时执行代码。

当 HTML 元素”有事情发生“时,浏览器就会生成事件:

  • 在元素上点击
  • 加载页面
  • 改变输入字段
1
2
3
4
5
innerText   文本
outerText
innerHTML   HTML内容
innerHTML 
value       值

 

 

 

application:

一、查找元素

1、直接查找

1
2
3
4
document.getElementById             根据ID获取一个标签
document.getElementsByName          根据name属性获取标签集合
document.getElementsByClassName     根据class属性获取标签集合
document.getElementsByTagName       根据标签名获取标签集合

 2、间接查找

1
2
3
4
5
6
7
8
9
10
11
12
13
parentNode          // 父节点
childNodes          // 所有子节点
firstChild          // 第一个子节点
lastChild           // 最后一个子节点
nextSibling         // 下一个兄弟节点
previousSibling     // 上一个兄弟节点
  
parentElement           // 父节点标签元素
children                // 所有子标签
firstElementChild       // 第一个子标签元素
lastElementChild        // 最后一个子标签元素
nextElementtSibling     // 下一个兄弟标签元素
previousElementSibling  // 上一个兄弟标签元素

 BOM

 图片选自百度百科

BOM(Browser Object Model)即浏览器对象模型。
     BOM提供了独立于内容 而与浏览器窗口进行交互的对象;
     由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;
     BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;
     BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。
     BOM 是 各个浏览器厂商根据 DOM在各自浏览器上的实现;[表现为不同浏览器定义有差别,实现方式不同]

OM的核心是Window,而Window对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一个Global(全局)对象。这意味着在网页中定义的任何对象,变量和函数,都以window作为其global对象。

Window对象包含属性:document、location、navigator、screen、history、frames

Document根节点包含子节点:forms、location、anchors、images、links

从window.document已然可以看出,DOM的最根本的对象是BOM的window对象的子对象。

区别:DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口

2.window:

属性: .innerWidth, .innerHeight 浏览器窗口中,文档显示区的宽和高
方法: .open() .close()
.open("url","name")
三种: 1. 在当前窗口打开,可后退: .open("url","_self")

3.history: 保存当前窗口打开后,成功访问过的url的历史记录栈

在当前窗口中,每访问一个新url,都会将新url压入history
API: history.go(n)
3种: 前进: history.go(1) 后退: history.go(-1)

4.location: 保存当前窗口正在打开的url的对象
属性: 
.href 完整url地址
.protocol 协议
.host 主机名+端口号
.hostname 主机名
.port 端口号
.pathname 相对路径
.hash #锚点地址
.search ?查询字符串
方法:

在当前窗口打开,可后退:
location.assign(url) => location.href=url => location=url
在当前窗口打开,禁止后退:
location.replace(url)
重新加载页面: 刷新: 2种:

普通刷新:
优先从浏览器本地缓冲获取资源:
F5
history.go(0)
location.reload(/false/)
强制刷新:
无论本地是否有缓存,总是强制从服务器获取资源
location.reload(true)
5.定时器: 2种:
周期性定时器:
什么是: 让程序每隔指定的时间间隔,反复执行一项任务
何时: 只要让程序按照指定的时间间隔,自动执行一项任务
如何: 3件事:

任务函数: 让定时器反复执行的任务
启动定时器: timer=setInterval(task, interval)
让程序,每隔interval 毫秒自动执行一次task任务
停止定时器: clearInterval(timer)
timer: 定时器的序号, 在内存中唯一标识定时器的整数
专门用于停止定时器
如何获得: 只能在启动定时器时获得。
何时: 只要一个定时器可能被停止,就要在启动时,先保存定时器序号
好的习惯: 在clearInterval之后,手动清除timer中残留的序号: timer=null;
停止定时器: 2种情况:
一次性定时器: 

什么是: 让程序先等待一段时间,再执行一次任务。执行后,自动停止。
何时: 只要让程序延迟执行一件事时
如何: 3件事:

task
启动定时器: timer=setTimeout(task,wait)
让程序等待wait毫秒后,自动执行一次task,执行后自动停止
停止定时器: clearTimeout(timer)

7.navigator:保存浏览器配置信息的对象

.cookieEnabled: 判断当前浏览器是否启用cookie
什么是cookie: 在客户端持久存储用户私密数据的小文件

methods:

在HTML中绑定: 
绑定: <ANY on事件名="js语句">
当事件发生时: 自动执行js语句
问题: 不符合内容与行为分离的原则,不便于维护和重用
但是: 在组件开发中,反而要求内容,行为和样式集中定义在一个小组件内,自成体系。
在js中绑定, 每个事件只能绑定一个处理函数: 
ANY.on事件名=function(){ ... }
当事件发生时: ANY.on事件名() //this->ANY
问题: 用赋值方式绑定事件处理函数
在js中绑定,每个事件可绑定多个处理函数:
ANY.addEventListener('事件名',handler)
在浏览器中为ANY元素的指定事件,添加一个事件监听对象。将事件监听对象加入到浏览器的监听队列中。
触发事件时: 浏览器会遍历监听队列中的每个监听对象,找到触发事件元素上对应事件的监听对象,调用其处理函数
移除事件监听:
ANY.removeEventListener('事件名',handler)
说明: handler必须是绑定时使用的原函数对象
强调: 如果一个处理函数,有可能被移除,则不能使用匿名函数绑定。应使用有名的函数绑定

 
原文地址:https://www.cnblogs.com/puyi174843/p/9839057.html