1、概念:

Document Object Model 文档对象模型:将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD(增删改查)的动态操作。

通过 HTML DOM(如图所示),可访问 JavaScript HTML 文档的所有元素。

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树。

提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。

JavaScript(JS)的DOM对象(JS的Document对象)----什么是DOM对象?_HTML

* W3C DOM 标准被分为 3 个不同的部分:

    * 核心 DOM - 针对任何结构化文档的标准模型(共6个)

        * Document:文档对象

        * Element:元素对象

        * Attribute:属性对象

        * Text:文本对象

        * Comment:注释对象

        * Node:节点对象,其他5个的父对象

    * XML DOM - 针对 XML 文档的标准模型
    * HTML DOM - 针对 HTML 文档的标准模型

2、核心DOM模型:

    2.1、 Document:文档对象

        1. 创建(获取):在html dom模型中可以使用window对象来获取
            1. window.document
            2. document
        2. 方法(两大类:一类获取,一类创建):
            1. 获取Element对象:
                1. getElementById()    : 根据id属性值获取元素对象。id属性值一般唯一
                2. getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
                3. getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
                4. getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组
            2. 创建其他DOM对象:
                createAttribute(name)
                createComment()
                createElement()
                createTextNode()
        3. 属性

    2.2、Element:元素对象

        1. 获取/创建:通过document来获取和创建
        2. 方法(常用的):
            1. removeAttribute():删除属性
            2. setAttribute():设置属性

属性和方法

下面的属性和方法可用于所有 HTML 元素上:

属性 / 方法

描述

element.accessKey

设置或返回元素的快捷键。

element.appendChild()

向元素添加新的子节点,作为最后一个子节点。

element.attributes

返回元素属性的 NamedNodeMap。

element.childNodes

返回元素子节点的 NodeList。

element.className

设置或返回元素的 class 属性。

element.clientHeight

返回元素的可见高度。

element.clientWidth

返回元素的可见宽度。

element.cloneNode()

克隆元素。

element.compareDocumentPosition()

比较两个元素的文档位置。

element.contentEditable

设置或返回元素的文本方向。

element.dir

设置或返回元素的内容是否可编辑。

element.firstChild

返回元素的首个子。

element.getAttribute()

返回元素节点的指定属性值。

element.getAttributeNode()

返回指定的属性节点。

element.getElementsByTagName()

返回拥有指定标签名的所有子元素的集合。

element.getFeature()

返回实现了指定特性的 API 的某个对象。

element.getUserData()

返回关联元素上键的对象。

element.hasAttribute()

如果元素拥有指定属性,则返回true,否则返回 false。

element.hasAttributes()

如果元素拥有属性,则返回 true,否则返回 false。

element.hasChildNodes()

如果元素拥有子节点,则返回 true,否则 false。

element.id

设置或返回元素的 id。

element.innerHTML

设置或返回元素的内容。

element.insertBefore()

在指定的已有的子节点之前插入新节点。

element.isContentEditable

设置或返回元素的内容。

element.isDefaultNamespace()

如果指定的 namespaceURI 是默认的,则返回 true,否则返回 false。

element.isEqualNode()

检查两个元素是否相等。

element.isSameNode()

检查两个元素是否是相同的节点。

element.isSupported()

如果元素支持指定特性,则返回 true。

element.lang

设置或返回元素的语言代码。

element.lastChild

返回元素的最后一个子元素。

element.namespaceURI

返回元素的 namespace URI。

element.nextSibling

返回位于相同节点树层级的下一个节点。

element.nodeName

返回元素的名称。

element.nodeType

返回元素的节点类型。

element.nodeValue

设置或返回元素值。

element.normalize()

合并元素中相邻的文本节点,并移除空的文本节点。

element.offsetHeight

返回元素的高度。

element.offsetWidth

返回元素的宽度。

element.offsetLeft

返回元素的水平偏移位置。

element.offsetParent

返回元素的偏移容器。

element.offsetTop

返回元素的垂直偏移位置。

element.ownerDocument

返回元素的根元素(文档对象)。

element.parentNode

返回元素的父节点。

element.previousSibling

返回位于相同节点树层级的前一个元素。

element.removeAttribute()

从元素中移除指定属性。

element.removeAttributeNode()

移除指定的属性节点,并返回被移除的节点。

element.removeChild()

从元素中移除子节点。

element.replaceChild()

替换元素中的子节点。

element.scrollHeight

返回元素的整体高度。

element.scrollLeft

返回元素左边缘与视图之间的距离。

element.scrollTop

返回元素上边缘与视图之间的距离。

element.scrollWidth

返回元素的整体宽度。

element.setAttribute()

把指定属性设置或更改为指定值。

element.setAttributeNode()

设置或更改指定属性节点。

element.setIdAttribute()

 

element.setIdAttributeNode()

 

element.setUserData()

把对象关联到元素上的键。

element.style

设置或返回元素的 style 属性。

element.tabIndex

设置或返回元素的 tab 键控制次序。

element.tagName

返回元素的标签名。

element.textContent

设置或返回节点及其后代的文本内容。

element.title

设置或返回元素的 title 属性。

element.toString()

把元素转换为字符串。

nodelist.item()

返回 NodeList 中位于指定下标的节点。

nodelist.length

返回 NodeList 中的节点数。

    2.3、Node:节点对象,其他5个的父对象

        * 特点:所有dom对象都可以被认为是一个节点
        * 方法:
            * CRUD dom树:
                * appendChild():向节点的子节点列表的结尾添加新的子节点。
                * removeChild()    :删除(并返回)当前节点的指定子节点。
                * replaceChild():用新节点替换一个子节点。
        * 属性:
            * parentNode 返回节点的父节点。

Node 对象的方法

方法

描述

IE

F

O

W3C

appendChild()

向节点的子节点列表的结尾添加新的子节点。

5

1

9

Yes

cloneNode()

复制节点。

5

1

9

Yes

compareDocumentPosition()

对比两个节点的文档位置。

No

1

No

Yes

getFeature(feature,version)

返回一个 DOM 对象,此对象可执行带有指定特性和版本的专门的 API。

 

 

No

Yes

getUserData(key)

返回与此节点上的某个键相关联的对象。此对象必须首先通过使用相同的键来调用 setUserData 被设置到此节点。

 

 

No

Yes

hasAttributes()

判断当前节点是否拥有属性。

No

1

9

Yes

hasChildNodes()

判断当前节点是否拥有子节点。

5

1

9

Yes

insertBefore()

在指定的子节点前插入新的子节点。

5

1

9

Yes

isDefaultNamespace(URI)

返回指定的命名空间 URI 是否为默认。

 

 

No

Yes

isEqualNode()

检查两个节点是否相等。

No

No

No

Yes

isSameNode()

检查两个节点是否是相同的节点。

No

1

No

Yes

isSupported()

返回当前节点是否支持某个特性。

 

 

9

Yes

lookupNamespaceURI()

返回匹配指定前缀的命名空间 URI。

No

1

No

Yes

lookupPrefix()

返回匹配指定命名空间 URI 的前缀。

No

1

No

Yes

normalize()

合并相邻的Text节点并删除空的Text节点。

5

1

9

Yes

removeChild()

删除(并返回)当前节点的指定子节点。

5

1

9

Yes

replaceChild()

用新节点替换一个子节点。

5

1

9

Yes

selectNodes()

用一个 XPath 表达式查询选择节点。

6

 

 

 

selectSingleNode()

查找和 XPath 查询匹配的一个节点。

6

 

 

 

transformNode()

使用 XSLT 把一个节点转换为一个字符串。

6

 

 

 

transformNodeToObject()

使用 XSLT 把一个节点转换为一个文档。

6

 

 

 

setUserData(key,data,handler)

把对象关联到节点上的一个键上。

 

 

No

Yes

3、HTML DOM

    1. 标签体的设置和获取:innerHTML
    2. 使用html元素对象的属性
    3. 控制元素样式
        1. 使用元素的style属性来设置
            如:
                 //修改样式方式1
                div1.style.border = "1px solid red";
                div1.style.width = "200px";
                //font-size--> fontSize
                div1.style.fontSize = "20px";
        2. 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。

 

事件监听机制:

* 概念:某些组件被执行了某些操作后,触发某些代码的执行。    
    * 事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
    * 事件源:组件。如: 按钮 文本输入框...
    * 监听器:代码。
    * 注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。

* 常见的事件:
    1. 点击事件:
        1. onclick:单击事件
        2. ondblclick:双击事件
    2. 焦点事件
        1. onblur:失去焦点
        2. onfocus:元素获得焦点。

    3. 加载事件:
        1. onload:一张页面或一幅图像完成加载。

    4. 鼠标事件:
        1. onmousedown    鼠标按钮被按下。
        2. onmouseup    鼠标按键被松开。
        3. onmousemove    鼠标被移动。
        4. onmouseover    鼠标移到某元素之上。
        5. onmouseout    鼠标从某元素移开。

    5. 键盘事件:
        1. onkeydown    某个键盘按键被按下。    
        2. onkeyup        某个键盘按键被松开。
        3. onkeypress    某个键盘按键被按下并松开。

    6. 选择和改变
        1. onchange    域的内容被改变。
        2. onselect    文本被选中。

    7. 表单事件:
        1. onsubmit    确认按钮被点击。
        2. onreset    重置按钮被点击。

事件句柄 (Event Handlers)

HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为。

属性

此事件发生在何时...

onabort

图像的加载被中断。

onblur

元素失去焦点。一般用于表单校验,如用户名,密码,手机号什么的。

onchange

域的内容被改变。常用于下拉列表。

onclick

当用户点击某个对象时调用的事件句柄。

ondblclick

当用户双击某个对象时调用的事件句柄。

onerror

在加载文档或图像时发生错误。

onfocus

元素获得焦点。

onkeydown

某个键盘按键被按下。

onkeypress

某个键盘按键被按下并松开。

onkeyup

某个键盘按键被松开。

onload

一张页面或一幅图像完成加载。加载完成事件,用的比较多。

onmousedown

鼠标按钮被按下。

onmousemove

鼠标被移动。

onmouseout

鼠标从某元素移开。

onmouseover

鼠标移到某元素之上。

onmouseup

鼠标按键被松开。

onreset

重置按钮被点击。

onresize

窗口或框架被重新调整大小。

onselect

文本被选中。

onsubmit

确认按钮被点击。可以阻止表单的提交(此方法要返回false,即return false; 时才可以阻止表单提交)。如果在<form>标签里,定义了onclick, 则格式为οnclick="return 方法()"; 如果在<form>标签里,用id获取form对象,调用onsubmit事件,可以在这个方法里直接return 布尔值。详细查看下面示例。

onunload

用户退出页面。

鼠标 / 键盘属性

属性

描述

altKey

返回当事件被触发时,"ALT" 是否被按下。

button

返回当事件被触发时,哪个鼠标按钮被点击。

clientX

返回当事件被触发时,鼠标指针的水平坐标。

clientY

返回当事件被触发时,鼠标指针的垂直坐标。

ctrlKey

返回当事件被触发时,"CTRL" 键是否被按下。

metaKey

返回当事件被触发时,"meta" 键是否被按下。

relatedTarget

返回与事件的目标节点相关的节点。

screenX

返回当某个事件被触发时,鼠标指针的水平坐标。

screenY

返回当某个事件被触发时,鼠标指针的垂直坐标。

shiftKey

返回当事件被触发时,"SHIFT" 键是否被按下。

例子如下:

<form action="#" id="form" οnclick="return  checkForm();">
   <input name="username" id="username"><select id="city">
     <option>--请选择--</option>
     <option>北京</option>
     <option>上海</option>
     <option>西安</option>
 </select>
 <input type="submit" value="提交">
 </form><script>
          /*document.getElementById("form").onsubmit = function(){
                 //校验用户名格式是否正确
                 var flag = false;
                 return flag;
             }*/         function checkForm(){
             return true;
         }</script>

 

具体相关属性可以查看W3CSchool官方文档

 

想要查看JS的简单介绍,可以点击查看

1、请看点击查询基本语法章节

2、请看点击查询基本对象章节

3、请看点击查询BOM对象章节

4、请看点击查询DOM对象章节