JavaScript的DOM

第一节 JavaScript的DOM
JavaScript主要包括三部分内容:ECMAScript、DOM、BOM

1.1 DOM概述
通过 HTML DOM,使用 JavaScript访问 HTML 文档的所有元素。

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

HTML DOM 模型被构造为对象的树

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

JavaScript 能够改变页面中的所有 HTML 元素。

JavaScript 能够改变页面中的所有 HTML 属性。

JavaScript 能够改变页面中的所有 CSS 样式。

JavaScript 能够对页面中的所有事件做出反应。

1.2 获取HTML元素
通常,通过 JavaScript,您需要操作 HTML 元素。

为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:

通过 id 找到 HTML 元素

通过标签名找到 HTML 元素

通过类名找到HTML 元素

4.2.1 id找到HTML元素
在 DOM 中查找 HTML 元素的最简单的方法,是通过使用元素的 id。

本例查找 id=“intro” 元素:

var x=document.getElementById(“intro”);
如果找到该元素,则该方法将以对象(在 x 中)的形式返回该元素。

如果未找到该元素,则 x 将包含 null。

1.2.2 标签名找到 HTML 元素
本例查找 id=“main” 的元素,然后查找 id=“main” 元素中的所有

元素:

var x=document.getElementById(“main”); var y=x.getElementsByTagName(“p”);
1.2.3 类名找到HTML 元素
本例通过 getElementsByClassName 函数来查找 class=“intro” 的元素:

var x=document.getElementsByClassName(“intro”);
1.3 修改HTML
HTML DOM 允许 JavaScript 改变 HTML 元素的内容。

1.3.1 改变HTML内容
修改 HTML 内容的最简单的方法时使用 innerHTML 属性。

如需改变 HTML 元素的内容,请使用这个语法:

document.getElementById(id).innerHTML=“abcd”;

document.getElementById(id).innerText=“xxxx”;

本例改变了

元素的内容:

本例改变了

元素的内容:

Hello World!

1.3.2 改变HTML属性 如需改变 HTML 元素的属性,请使用这个语法:

document.getElementById(id).attribute=新属性值

本例改变了 元素的 src 属性:

1.4 修改CSS样式
改变HTML的样式:

如需改变 HTML 元素的样式,请使用这个语法:

document.getElementById(id).style.property=新样式

下面的例子会改变

元素的样式:

Hello World!

Hello World!

以上段落通过脚本修改。

1.5 元素操作
1.5.1 创建新元素
如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。

这是一个段落。

这是另一个段落。

例子说明:

这段代码创建新的

元素:

var para=document.createElement(“p”);

如需向

元素添加文本,您必须首先创建文本节点。这段代码创建了一个文本节点:

var node=document.createTextNode(“这是一个新段落。”);

然后必须向

元素追加这个文本节点:

para.appendChild(node);

最后必须向一个已有的元素追加这个新元素。

这段代码找到一个已有的元素:

var element=document.getElementById(“div1”);

以下代码在已存在的元素后添加新元素:

element.appendChild(para);

1.5.2 删除已有的 HTML 元素
以下代码演示了如何删除元素:

这是一个段落。

这是另一个段落。

例子说明:

这个 HTML 文档含有拥有两个子节点(两个

元素)的

元素:

这是一个段落。

这是另一个段落。

找到 id="div1" 的元素:

var parent=document.getElementById(“div1”);

找到 id=“p1” 的

元素:

var child=document.getElementById(“p1”);

从父元素中删除子元素:

parent.removeChild(child);

如果能够在不引用父元素的情况下删除某个元素,就太好了。不过很遗憾。DOM 需要清楚您需要删除的元素,以及它的父元素。

这是常用的解决方案:找到您希望删除的子元素,然后使用其 parentNode 属性来找到父元素:

var child=document.getElementById(“p1”); child.parentNode.removeChild(child);

1.6 DOM事件
HTML DOM 允许我们通过触发事件来执行代码。

比如以下事件:

元素被点击。

页面加载完成。

输入框被修改。

在接下来的章节,你会学到更多关于事件的知识。

本例改变了 id=“id1” 的 HTML 元素的样式,当用户点击按钮时:

myH1

button

在本例中,当用户在

元素上点击时,会改变其内容:

点击文本!

本例从事件处理器调用一个函数:

点击文本!

HTML DOM 允许您使用 JavaScript 来向 HTML 元素分配事件:

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

onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。

onchange 事件常结合对输入字段的验证来使用。

下面是一个如何使用 onchange 的例子。当用户改变输入字段的内容时,会调用 upperCase() 函数。

onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。
Mouse Over Me

1.7 EventListener
addEventListener() 方法

在用户点击按钮时触发监听事件:

document.getElementById(“myBtn”).addEventListener(“click”, displayDate);
addEventListener() 方法用于向指定元素添加事件句柄。

addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。

你可以向一个元素添加多个事件句柄。

你可以向同个元素添加多个同类型的事件句柄,如:两个 “click” 事件。

你可以向任何 DOM 对象添加事件监听,不仅仅是 HTML 元素。如: window 对象。

addEventListener() 方法可以更简单的控制事件(冒泡与捕获)。

当你使用 addEventListener() 方法时, JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。

你可以使用 removeEventListener() 方法来移除事件的监听。

语法:

element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 “click” 或 “mousedown”). 把on去掉

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

注意:不要使用 “on” 前缀。 例如,使用 “click” ,而不是使用 “onclick”。

当用户点击元素时弹出 “Hello World!” :

element.addEventListener(“click”, myFunction); function myFunction() { alert (“Hello World!”); }
addEventListener() 方法允许向同个元素添加多个事件,且不会覆盖已存在的事件:

element.addEventListener(“click”, myFunction); element.addEventListener(“click”, mySecondFunction);
事件冒泡或事件捕获?

事件传递有两种方式:冒泡与捕获。

事件传递定义了元素事件触发的顺序。 如果你将

元素插入到

元素中,用户点击

元素, 哪个元素的 “click” 事件先被触发呢?

在 *冒泡 *中,内部元素的事件会先被触发,然后再触发外部元素,即:

元素的点击事件先触发,然后会触发

元素的点击事件。

在 *捕获 *中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即:

元素的点击事件先触发 ,然后再触发

元素的点击事件。

addEventListener() 方法可以指定 “useCapture” 参数来设置传递类型:

addEventListener(event, function, useCapture);
默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

document.getElementById(“myDiv”).addEventListener(“click”, myFunction, true);
removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:

element.removeEventListener(“mousemove”, myFunction);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值