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

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

HTML DOM 树

每加载一个标记 注释 或者属性,就将其当做节点(node)。

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

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

查找 HTML 元素

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

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

  • 通过 id 找到 HTML 元素
  • 通过标签名找到 HTML 元素
  • 通过类名找到 HTML 元素

1)   getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。

<html>
<head>
<script type="text/javascript">
function getValue()
{
var x=document.getElementById("myHeader")
alert(x.innerHTML)
}
</script>
</head>
<body> <h1 id="myHeader" onclick="getValue()">这是标题</h1>
<p>点击标题,会提示出它的值。</p> </body>
</html>

2)   getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

<html>
<head>
<script type="text/javascript">
function getElements()
{
var x=document.getElementsByTagName("input");
alert(x.length);
}
</script>
</head>
<body> <input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<br />
<input type="button" onclick="getElements()" value="How many input elements?" /> </body>
</html>

3) getElementsByName() 方法可返回带有指定名称的对象的集合。

注意一下(不兼容) 在ie它只得到标准元素中有name属性的
FF chorem 都可以得到
建议getElementsByName 推荐使用针对表单的时候
<html>
<head>
<script type="text/javascript">
function getElements()
{
var x=document.getElementsByName("myInput");
alert(x.length);
}
</script>
</head>
<body> <input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<br />
<input type="button" onclick="getElements()"
value="How many elements named 'myInput'?" /> </body>
</html>
getElementByTagName(*)能得到所有元素节点,IE支持,不推荐使用。
兼容函数(getElementsByClassName)
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
window.onload=function myGetElementsByClassName(className){
var els=[];
if(document.all){//只认识IE;
// alert(IE);
var elements=document.getElementsByTagName("*");
// alert(elements.length);
for(var i=0;i<elements.length;i++){
if(elements[i].className==className){
els.push(elements[i]);
}
} }
else{
els=document.getElementsByClassName(className);
}
return els;
};
</script>
</head> <body>
<input type="button" class="input1" id="in" value="第一个"/><br/>
<input type="button" class="input1" name="one" value="第二个"/><br/>
<input type="button" class="input" name="two" value="第三个"/><br/>
<input type="button" class="input" name="one" value="第四个"/><br/>
<script> var els=document.getElementsByClassName("input");
// alert(els.length);
for(var i=0;i<els.length;i++){
els[i].style.backgroundColor="blue";
}
</script>
</body>
</html>

创建和操作节点;

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div{
border: 1px red solid;
}
#one{
width:100px;
height: 100px;
}
#two{
width:50px;
height: 50px;
}
</style> <script>
window.onload=function(){
var bnt=document.getElementsByTagName('button')[0];
bnt.onclick=function(){
/*var p=document.createElement('p');
var text=document.createTextNode('你好');
p.appendChild(text);
document.body.appendChild(p);
*/
//我们可以使用一个简便的方法就是使用innerHTML;
var p=document.createElement('p');
p.innerHTML='<span>你好</span>';//这样可以直接添加很多的节点
document.body.appendChild(p);//添加节点 appendChild 默认是的从最后开始添加 var div = document.getElementById("one");
//删除节点
// document.body.removeChild(div);
var div2 = document.getElementById("two");
// div.removeChild(div2); var div5 = document.createElement("div");
div5.innerHTML="div555";
//替换子节点
// div.replaceChild(div5,div2);//replaceChild(newnode,oldnode) //插入
div.insertBefore(div5,div2);//insertBefore(newnode,oldnode)
// 复制节点(参数) true 会复制它的子节点
// false 只复制这个节点本事,但是不复制它的子节点
// var div6 = div2.cloneNode(false);
//div.appendChild(div6); }; };
</script>
</head>
<body>
<button>点击</button>
<div id="one">
div1
<div id="two">
div2
</div>
<div>
div3
</div>
<div>
div4
</div> </div>
</body>
</html>

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

  1. JavaScript编程:文档对象模型DOM

    5.文档对象模型DOM JS里的DOM和XML里的DOM不同,但是解析方式是一样的. document.getElementByID("id")根据ID获得元素节点. 创建和操作节 ...

  2. 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。元素、属性和文本的树结构(节点树)。

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  3. 文档对象模型DOM通俗讲解

    转自:http://www.jb51.net/article/42671.htm 在开始之前先说一点,DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍.加深 ...

  4. 文档对象模型DOM

    文档对象模型 DOM 1 DOM概述 1.1 什么是DOM 文档对象模型 Document Object Model 提供给用户操作document obj 的标准接口 文档对象模型 是表示和操作 H ...

  5. JavaScript的文档对象模型DOM

    小伙伴们之前我们讲过很多JavaScript的很多知识点,可以点击回顾一下: <JavaScript大厦之JS运算符>: <JavaScript工作原理:内存管理 + 如何处理4个常 ...

  6. 第10章 文档对象模型DOM 10.1 Node节点类型

    DOM是针对 HTML 和 XML 文档的一个 API(应用程序编程接口) .DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分.DOM 脱胎于Netscape 及微软公司创始 ...

  7. 第10章 文档对象模型DOM 10.2 Document类型

    Document 类型 JavaScript 通过 Document 类型表示文档.在浏览器中, document 对象是 HTMLDocument (继承自 Document 类型)的一个实例,表示 ...

  8. 第10章 文档对象模型DOM 10.3 Element类型

    Element 类型用于表现 XML或 HTML元素,提供了对元素标签名.子节点及特性的访问. 要访问元素的标签名,可以使用 nodeName 属性,也可以使用 tagName 属性:这两个属性会返回 ...

  9. 文档对象模型DOM(二)

    练习: 要求:界面上有个登录按钮,点击登录的时候,界面中弹出一个登录的方框,点击登录方框中的×的,登录方框消失. <!DOCTYPE html> <html> <head ...

随机推荐

  1. bootstrap 警告框多个删除

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  2. CI、CD和dev-ops概念

    传统的开发方式是:需求方提供文档,实现方按照文档一步步开发,中间很少变动和修改. 但是随着市场的变化,产品更新迭代的加快,也要求开放方更快的响应变化,用最短的时间开发,部署上线. 这样,持续集成(CI ...

  3. ABP 框架 数据库底层迁移 Mysql 集群

    技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...

  4. DOM LEVEL 1 中的那些事儿[总结篇-下]

    本文承接:DOM LEVEL 1 中的那些事儿[上]   2.3 Element类型 Element类型应该是Document类型之外使用的最多的节点类型了,Element代表XML或HTML文档中的 ...

  5. [leetcode.com]算法题目 - Triangle

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  6. eclipse代码提示javadoc背景为黑色框的解决办法

    我的eclipse是近期下载的oxygen版本.不知道怎么出现了一个这个问题,鼠标悬停指向代码时应该出现的代码提示解释框,全为黑色,看不到文字.如下图 经过验证,最终解决方法为window->G ...

  7. WCF接口实例介绍

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. WCF整合了原有的windows通讯 ...

  8. python学习笔记16-装饰器

    装饰器(函数) 1.函数作用域 2.高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 3.闭包  闭包就是能够读取其他函数内部变量的函数. 在本质上,闭包 ...

  9. 使用命令行工具npm新创建一个vue项目

    使用vue开发项目的前期工作可以参考前面写的:  Vue环境搭建及node安装过程整理 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的 ...

  10. 基于alpine用dockerfile创建的nginx镜像

    1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...