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

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

HTML DOM 树

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

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应
查找 HTML 元素
通常,通过 JavaScript,您需要操作 HTML 元素。
为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:
通过 id 找到 HTML 元素
通过标签名找到 HTML 元素
通过类名找到 HTML 元素

一、改变HTML 元素

1、改变 HTML 输出流

JavaScript 能够创建动态的 HTML 内容:

今天的日期是: Mon Apr 17 2017 10:32:53 GMT+0800 (中国标准时间)

在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。

<!DOCTYPE html>
<html>
<body> <script>
document.write(Date()); //当前日期
</script> </body>
</html>

2、改变 HTML 内容

改变 HTML 元素的内容,语法:

document.getElementById(id).innerHTML=new HTML
例:改变id="header" HTML内容
<h1 id="header">Old Header</h1>
//方法一:
<script>document.getElementById("header").innerHTML="New Header!"; </script>
//方法二:
<script> var element=document.getElementById("header"); element.innerHTML="New Header"; </script>
使用 HTML DOM[document.getElementById(id)]来获得 id="header" 的元素,JavaScript 更改此元素的内容 (innerHTML)

3、改变 HTML 属性

改变 HTML 元素的属性,语法:

document.getElementById(id).attribute=new value
例:改变id="image" HTML属性src
<img id="image" src="smiley.gif">

<script>document.getElementById("image").src="landscape.jpg";</script>
使用 HTML DOM[document.getElementById(id)]来获得 id="image" 的元素,JavaScript 更改此元素的属性.src[把 "smiley.gif" 改为 "landscape.jpg"];

二、改变 HTML 样式

改变 HTML 元素的样式,语法:

document.getElementById(id).style.property=new style
例:改变id="p2"样式颜色style.color,点击按钮改变id="id1"样式颜色style.color
<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
</script> <h1 id="id1">My Heading 1</h1>
<button type="button" onclick="document.getElementById('id1').style.color='red'">点击这里</button>

三、JavaScript HTML DOM 事件

1、对事件做出反应

在事件发生时执行 JavaScript,如当用户在 HTML 元素上点击时。如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码:

onclick=JavaScript

HTML 事件的例子:

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

例:点击文本触发onclick事件,改变HTML内容

<h1 onclick="this.innerHTML='谢谢!'">请点击该文本</h1>

例:点击文本触发onclick事件,调用changetext()函数,改变HTML内容

function changetext(id)
{
id.innerHTML="谢谢!";
}
</script>
</head>
<body>

<h1 onclick="changetext(this)">请点击该文本</h1>

例:点击文本触发onclick事件,调用displayDate()函数,查找到id="demo",出现HTML内容(当前时间Data())

<button onclick="displayDate()">点击这里</button>

<script>
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>

<p id="demo"></p>

2、HTML 事件属性

向 HTML 元素分配 事件,使用事件属性。

例:点击文本触发onclick事件,调用displayDate()函数,查找到id="demo",出现HTML内容(当前时间Data())

<button onclick="displayDate()">点击这里</button>

<script>
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>

<p id="demo"></p>


3、使用 HTML DOM 来分配事件

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

例:查找到id="myBtn",点击文本触发onclick事件,调用displayDate()函数,出现HTML内容(当前时间Data())

<button id="myBtn">点击这里</button>

<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>

<p id="demo"></p>

4、onload 和 onunload 事件

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

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

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

<script>
function checkCookies()
{
if (navigator.cookieEnabled==true)
{
alert("已启用 cookie")
}
else
{
alert("未启用 cookie")
}
}
</script> <p>提示框会告诉你,浏览器是否已启用 cookie。</p>

5、onchange 事件

例:onchange 事件用户改变输入域的内容时执行。常结合对输入字段的验证来使用。

x.value.toUpperCase()所有英文变成大写
function myFunction()
{
var x=document.getElementById("fname");
x.value=x.value.toUpperCase();
}
</script>
</head>
<body> 请输入英文字符:<input type="text" id="fname" onchange="myFunction()">

6、onmouseover 和 onmouseout 事件

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


<div onmouseover="mOver(this)" onmouseout="mOut(this)" style="background-color:green;width:120px;height:20px;padding:40px;color:#ffffff;">把鼠标移到上面</div>

<script>
function mOver(obj)
{

obj.innerHTML="谢谢.gh";

obj.style.color='#ffffff';//改变字体颜色

obj.style.backgroundColor='red';//改变背景颜色

obj.style.fontSize='20px';//改为字体大小

obj.style.width='140px'; //改变宽度

obj.style.height='30px';//改变高度

obj.style.borderRadius='5px';//改变圆角

} 

function mOut(obj) { 
obj.innerHTML="把鼠标移到上面";
obj.style.color='#ffffff';
obj.style.backgroundColor='green';
obj.style.fontSize='14px';
obj.style.width='120px';
obj.style.height='20px';
obj.style.borderRadius='60px';
} </script>

7、onmousedown、onmouseup 以及 onclick 事件

onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。

<div onmousedown="mDown(this)" onmouseup="mUp(this)" style="background-color:green;color:#ffffff;width:90px;height:20px;padding:40px;font-size:12px;">请点击这里</div>

<script>
function mDown(obj)
{
obj.style.backgroundColor="#1ec5e5";
obj.innerHTML="请释放鼠标按钮"
} function mUp(obj)
{
obj.style.backgroundColor="green";
obj.innerHTML="请按下鼠标按钮"
} 

四、JavaScript HTML DOM 元素(节点)

1、创建新的 HTML 元素

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

例:为div1加一个段落,段落内容为”这是新段落“;

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div> <script>
var para=document.createElement("p");// 创建新的 <p> 元素
var node=document.createTextNode("这是新段落。");//向 <p> 元素添加文本,必须首先创建文本节点
para.appendChild(node);//向 <p> 元素追加这个文本节点 var element=document.getElementById("div1");//找到一个已有的元素
element.appendChild(para); </script>//向这个已有的元素追加新元素;

2、删除已有的 HTML 元素

删除 HTML 元素,必须首先获得该元素的父元素:

/*这个 HTML 文档含有拥有两个子节点(两个 <p> 元素)的 <div> 元素*/
<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div> <script>
var parent=document.getElementById("div1");//找到 id="div1" 的元素
var child=document.getElementById("p1");//找到 id="p1" 的 <p> 元素
parent.removeChild(child);//从父元素中删除子元素:
</script>

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

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

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

HTML DOM (文档对象模型)的更多相关文章

  1. javascript之DOM文档对象模型编程的引入

    /* DOM(Document Object Model) 文档对象模型 一个html页面被浏览器加载的时候,浏览器就会对整个html页面上的所有标签都会创建一个对应的 对象进行描述,我们在浏览器上看 ...

  2. JavaScript(三、DOM文档对象模型)

    一.什么是DOM DOM 是 Document Object Model(文档对象模型)的缩写. DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准: &q ...

  3. html--JavaScript之DOM (文档对象模型)

    一.简介 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标 ...

  4. DOM文档对象模型简介

    DOM简介     DOM是W3C(万维网联盟)的标准 "W3C文档对象模型DOM是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容.结构.样式".W3C DOM ...

  5. dom文档对象模型图

  6. 文档对象模型 DOM

    1 DOM概述 1.1 什么是DOM 文档对象模型 Document Object Model 文档对象模型 是表示和操作 HTML和XML文档内容的基础API 文档对象模型,是W3C组织推荐的处理可 ...

  7. JavaScript交互式网页设计 • 【第4章 JavaScript文档对象模型】

    全部章节   >>>> 本章目录 4.1 文档对象模型简介及属性 4.1.1 文档对象模型概述 4.1.3 实践练习 4.2 document 对象查找 HTML 元素 4.2 ...

  8. DOM(文档对象模型)

    1.定义: DOM是Document Object Model文档对象模型的缩写.是针对HTML和XML文档的一个API,通过DOM可以去改变文档. 例如:我们有一段HTML,那么如何访问第二层第一个 ...

  9. 文档对象模型(DOM)中的结点属性

    在文档对象模型中,每个结点都是一个对象.DOM结点有三个重要的属性:nodeName .nodeValue和nodeType,分别表示结点名称.结点的值和结点的类型 一.nodeName,结点名称,只 ...

  10. 文档对象模型(DOM)

    文档对象模型(DOM)    DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构.节点分为几种不同的类型:文档型节点.元素节点.特性节点.注释节点等共有12种节点类型.DOM1级定义了 ...

随机推荐

  1. linux DNS 问题

    今天准备爬虫51job时候,发现ping不通外网了,ping 了一下IP,都是OK的,只是host不通. 呵呵,就一DNS问题,好的.第一步,开始检查配置文件 cat /etc/sysconfig/n ...

  2. docker~Dockerfile方式生成控制台和Api项目的镜像

    回到目录 一些理论知识 将控制台程序和API程序部署到docker,然后运行它,这个首先要解决的问题就是如何在linux平台运行C#代码,哈哈,很古老的问题,事实上,对于这种问题早在几年前就已经有了解 ...

  3. 【tyvj1463】智商问题 [分块][二分查找]

    Background 各种数据结构帝~各种小姊妹帝~各种一遍AC帝~ 来吧! Description 某个同学又有很多小姊妹了他喜欢聪明的小姊妹 所以经常用神奇的函数来估算小姊妹的智商他得出了自己所有 ...

  4. Android - 基于 Speex 的高度封装语音库,0 耦合使用

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  5. 【SignalR学习系列】8. SignalR Hubs Api 详解(.Net C# 客户端)

    建立一个 SignalR 连接 var hubConnection = new HubConnection("http://www.contoso.com/"); IHubProx ...

  6. [javascript] postmessage

    摘要 postmessage 作为 html5 跨域传值的解决方法,灰常好用啊..本次用的是页面a 用iframe 嵌入 页面b. 使用方法 postmessage 参数 otherWindow.po ...

  7. ABP 重写主键ID

    [Column("你那表的源主键名")] public override leixing Id{ get; set; }

  8. NYOJ--488--dfs--素数环

    /* Name: NYOJ--488--素数环 Author: shen_渊 Date: 15/04/17 15:30 Description: DFS,素数打个表,37以内就够用了 */ #incl ...

  9. 总结jq的一些特效

    Jquery代码总结 1.轮播图: <script src="jquery-1.8.3.min.js"></script><script>    ...

  10. html2canvas页面截图图片不显示

    前两天在一个群里,有人问使用html2canvas屏幕截图的时候为什么页面的图片不显示只显示了文字,我没有做过屏幕截图的需求,所以不是很清楚,今天稍稍测试了一下. 在github上将html2canv ...