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

1、概念:

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

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

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

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

* 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 对象的方法

方法描述IEFOW3C
appendChild()向节点的子节点列表的结尾添加新的子节点。519Yes
cloneNode()复制节点。519Yes
compareDocumentPosition()对比两个节点的文档位置。No1NoYes
getFeature(feature,version)返回一个 DOM 对象,此对象可执行带有指定特性和版本的专门的 API。  NoYes
getUserData(key)返回与此节点上的某个键相关联的对象。此对象必须首先通过使用相同的键来调用 setUserData 被设置到此节点。  NoYes
hasAttributes()判断当前节点是否拥有属性。No19Yes
hasChildNodes()判断当前节点是否拥有子节点。519Yes
insertBefore()在指定的子节点前插入新的子节点。519Yes
isDefaultNamespace(URI)返回指定的命名空间 URI 是否为默认。  NoYes
isEqualNode()检查两个节点是否相等。NoNoNoYes
isSameNode()检查两个节点是否是相同的节点。No1NoYes
isSupported()返回当前节点是否支持某个特性。  9Yes
lookupNamespaceURI()返回匹配指定前缀的命名空间 URI。No1NoYes
lookupPrefix()返回匹配指定命名空间 URI 的前缀。No1NoYes
normalize()合并相邻的Text节点并删除空的Text节点。519Yes
removeChild()删除(并返回)当前节点的指定子节点。519Yes
replaceChild()用新节点替换一个子节点。519Yes
selectNodes()用一个 XPath 表达式查询选择节点。6   
selectSingleNode()查找和 XPath 查询匹配的一个节点。6   
transformNode()使用 XSLT 把一个节点转换为一个字符串。6   
transformNodeToObject()使用 XSLT 把一个节点转换为一个文档。6   
setUserData(key,data,handler)把对象关联到节点上的一个键上。  NoYes

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对象章节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

No8g攻城狮

向每一个努力改变现状的你致敬!

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

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

打赏作者

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

抵扣说明:

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

余额充值