Javascript之理解BOM和DOM

1.概念:

        一个完整的JavaScript实现应该由以下三个部分构成:ECMAScript、DOM、BOM.

        ECMAScript: ES规定了JS的变成语法和基础核心知识,是所有浏览器厂商都遵守的JS语法工业标准。

        DOM: 文档对象模型(Document Object Model),让我们通过DOM提供的接口来操作网页。DOM中,文档表示的就是整个HTML网页文档;对象表示将网页每个部分转换为一个对象;模型为使用模型表示对象间的关系,方便我们获取对象。通过dom,可以访问、操作HTML文档的所有元素。

        BOM:浏览器对象模型(Browser Object Model),BOM没有相关标准,BOM的最核心对象是window对象。它使JavaScript有能力与“浏览器”进行对话。

2.BOM和DOM的区别

        javacsript是通过访问BOM(Browser Object Model)对象来访问、控制、修改客户端(浏览器),由于BOM的window包含了document,window对象的属性和方法是直接可以使用而且被感知的,因此可以直接使用window对象的document属性,通过document属性就可以访问、检索、修改HTML文档内容与结构。因为document对象又是DOM(Document Object Model)模型的根节点。可以说,BOM包含了DOM(对象),浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。

其中

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

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

window.document已然可以看出,DOM的最根本的对象是BOM的window对象的子对象。而他们之前的最大区别:DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口。

3.BOM

1.Windows对象

  所有浏览器都支持 window 对象,它表示浏览器窗口;所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员;全局变量是 window 对象的属性;全局函数是 window 对象的方法。

甚至 HTML DOM 的 document 也是 window 对象的属性之一:

window.document.getElementById("header");

与此相同:

document.getElementById("header");

2.Window对象方法:

浏览器窗口大小
innerHeight - 浏览器窗口的内部高度
innerWidth - 浏览器窗口的内部宽度

弹出框
alert() 警告框
prompt(); 提示框,提示用户输入信息,接受两个参数,即要显示给用户的文本和文本框中的默认值,将文本框中的值作为函数值返回
confirm()   确认框,弹出一个具有OK和Cancel按钮的询问对话框,返回一个布尔值

计时器相关
setInterval()   按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout()    在指定的延时时间后来执行代码
clearInterval() 取消setInterval()的设置
clearTimeout()  取消setTimeout() 的设置

其它
open()  打开新窗口
close() 关闭当前窗口
print() 打印当前窗口的内容
focus() 把键盘焦点给予一个窗口
blur()  把键盘焦点从顶层窗口移开
moveBy()    可相对窗口的当前坐标把它移动到指定的像素
moveTo()    把窗口的左上角移动到一个指定的坐标
resizeBy()  按照指定的像素调整窗口的大小
resizeTo()  把窗口的大小调整到指定的宽度和高度
scrollBy()  按照指定的像素值来滚动内容
scrollTo()  把内容滚动到指定的坐标

3.Window的子对象主要有如下几个:

  • JavaScript document 对象
  • JavaScript frames 对象
  • JavaScript history 对象
  • JavaScript location 对象
  • JavaScript navigator 对象
  • JavaScript screen 对象

4.DOM

 1.HTML DOM树

DOM标准规定HTML文档中的每个成分都是一个节点(node):

  • 文档节点(document对象):代表整个文档
  • 元素节点(element 对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(comment对象) 

JavaScript 可以通过DOM创建动态的 HTML:

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

2.查找标签

(1)直接查找

document.getElementById() 根据ID获取一个标签

document.getElementsByClassName() 根据class属性获取

document.getElementsByTagName 根据标签名获取标签合集

document.getElementsByName() 根据name属性名获取

(2)间接查找

parentElement 父节点标签元素

children 所有子标签

firstElementChild 第一个子标签元素

lastElementChild 最后一个子标签元素

nextElementSibling 下一个兄弟标签元素

previousElementSibling 上一个兄弟标签元素

(3)节点操作

createElement() 创建节点

appendChild() 末尾添加节点,并返回新增节点

insertBefore() 参照节点之前插入节点,两个参数:要插入的节点和参照节点

insertAfter() 参照节点之后插入节点,两个参数:要插入的节点和参照节点

replaceChild() 替换节点,两个参数:要插入的节点和要替换的节点(被移除)

removeChild() 移除节点

cloneNode() 克隆,一个布尔值参数,true为深拷贝,false为浅拷贝

importNode() 从文档中复制一个节点,两个参数:要复制的节点和布尔值(是否复制子节点)

insertAdjacentHTML()

插入文本,两个参数:插入的位置和要插入文本


"beforebegin",在该元素前插入

"afterbegin",在该元素第一个子元素前插入

"beforeend",在该元素最后一个子元素后面插入

"afterend",在该元素后插入

3.class的操作

className  获取所有样式类名(字符串)

classList.remove(cls)  删除指定类
classList.add(cls)  添加类
classList.contains(cls)  存在返回true,否则返回false
classList.toggle(cls)  存在就删除,否则添加

4.指定css操作

obj.style.backgroundColor="red"

JS操作CSS属性的规律:

(1)对于没有中横线的CSS属性一般直接使用style.属性名即可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

(2)对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

5.事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。
 
onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)
 
onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
 
onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值