javascript基础加固6—-DOM

本节 JavaScript 的 DOM 操作,内容主要包括:

  • 通过 ID、名字、标签名 选取元素;
  • 通过 getAttribute 和 setAttribute 获取和设置元素属性;
  • 通过 parentNode 获取父元素、createElement 动态地创建节点、appendChild 和removeChild 动态地添加或者删除节点。

基本概念

2.1.1 什么是 DOM

DOM 是 文档对象模型(Document Object Model)的简称,它的基本思想是把结构化文档(比如 HTML 和 XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口,以达到使用编程语言操作文档的目的,所以,DOM 可以理解成文档(HTML 文档、XML 文档)的编程接口。

严格地说,DOM 不属于 JavaScript,但是操作 DOM 是 JavaScript 最常见的任务,而 JavaScript 也是最常用于 DOM 操作的语言,本章介绍的就是 JavaScript 对 DOM 标准的实现和用法。

2.1.2 节点

DOM 的最小组成单位叫做 节点(node),一个文档的树形结构(DOM 树),就是由各种不同类型的节点组成。

对于 HTML 文档,节点主要有以下六种类型:

节点 名称 含义
Document 文档节点 整个文档(window.document)
DocumentType 文档类型节点 文档的类型
Element 元素节点 HTML 元素(比如<head>、<body>等)
Attribute 属性节点 HTML 元素的属性(比如 class="right")
Text 文本节点 HTML 文档中出现的文本
DocumentFragment 文档碎片节点 文档的片段

2.2 选取文档元素

2.2.1 通过 ID 选取元素

我们可以使用方法 getElementById() 通过元素的 ID 而选取元素,并对其做操作,比如:

<html>
<body>
<div id="my_div"></div>

<script>
    document.getElementById("my_div").style.height="100px";  // 设置 my_div 高度为 100px
    document.getElementById("my_div").style.background="red"; // 设置 my_div 颜色为 红色
</script>

</body>
</html>

通过 getElementByID() 设置了 ID 为 my_div 的一个 div 标签的高度(100px)和颜色(red)

2.2.2 通过名字(Name)或标签名(TagName)选取元素

除了通过 ID 选择元素,我们还可以使用 getElementsByName() 方法或者 getElementsByTagName() 方法找到元素,不过如果有多个同类型标签,那我们需要以下标来确认:

<html>
<body>
<input type="text" />
<input type="text" />

<script>
document.getElementsByTagName("input")[0].value="hello";   // 下标为 [0] 表示选取第 1 个 input 标签
document.getElementsByTagName("input")[1].value="shiyanlou"; // 下标为 [1] 表示选取第 2 个 input 标签
</script>

</body>
</html>

2.3 节点、属性操作和文档遍历

2.3.1 查询和设置元素的属性

可以通过 getAttribute() 和 setAttribute() 查询和设置元素的属性:

<html>
<head>
<style>
.class_1 {
    height:100px;
    width:100px;
    background:red;
}
.class_2 {
    height:100px;
    width:100px;
    background:blue;
}
</style>
</head>

<body>
<div id="div_1" class="class_1"></div>
<br/>
<a>before:</a>

<script>
document.write(document.getElementById("div_1").getAttribute("class")); // 查询 div_1 的属性
</script>

<br/>
<a>after:</a>

<script>
document.getElementById("div_1").setAttribute("class","class_2");  // 修改 div_1 的属性为 class_2
document.write(document.getElementById("div_1").getAttribute("class")); // 再次查询 div_1 的属性
</script>

</body>
</html>

代码可见,一开始 div_1 的属性为 class_1,我们通过getAttribute() 方法可以查看到该结果;

然后我们使用 setAttribute() 方法将 div_1 的属性设置为 class_2 ,然后再次使用 getAttribute() 方法查询,可见属性已经变为 class_2 ,结果如图:

2.3.2 父节点

通过 parentNode() 方法可以查看并操作一个节点的父节点,示例:找到 id 为 demo 的元素的父节点,并输出其 class 的名称:

<html>
<body>
<div class="demo-parent">
    <div id="demo">
    </div>
</div>

<script>
    document.write(document.getElementById("demo").parentNode.getAttribute("class"));
</script>
</body>
</html>

2.3.3 创建和插入节点

在了解 JavaScript 之前,可能会以为一个 HTML 页面被写出来是什么样,那它就固定了是什么样子。

但是 JavaScript 可以动态地在页面中创建并插入节点,这便需要用到 createElement()、appendChild() 方法,它们的作用分别是创建节点和插入节点。

比如:创建一个 div 并为其设置高度(100px)和背景色(red),并追加到 body 后面:

<html>
<body>
<div style="background:#00F; height:100px"></div>
<script>
    var mydiv = document.createElement("div");
    mydiv.style.height = "100px";
    mydiv.style.background = "red";
    document.getElementsByTagName("body")[0].appendChild(mydiv);
</script>
</body>
</html>

2.3.4 删除节点

除了创建,我们还可以删除一个节点,通过 removeChild() 方法:

<html>
<head>
</head>
<body>
<div>
    <div id="div_red" style="background:#F00; height:100px"></div>
    <div id="div_blue" style="background:#00F; height:100px"></div>
</div>
<script>
function remove_red(){
    var obj = document.getElementById("div_red");
    obj.parentNode.removeChild(obj);
    }
</script>
<button onclick="remove_red()">remove red div</button>
</body>
</html>

点击按钮 “remove red div” 便可以删去页面上红色的部分

原文地址:https://www.cnblogs.com/hackerbird/p/8794738.html

时间: 2024-10-09 03:48:58

javascript基础加固6—-DOM的相关文章

【JavaScript基础知识】——DOM基础

基本概念 DOM即文档对象模型,针对HTML和XML文档的API(应用程序接口).它描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构,也就是表示和处理一个HTML或XML文档的常用方法. D即document,上网查了一下它的英文翻译,最初的意思是记录.所以把它说是文档也是有迹可循的.O即Object,也就是对象,可以理解为类似window对象之类的东西,可以调用属性和方法.M(模型)可以理解为网页文档的树

javascript基础学习系列-DOM盒子模型常用属性

最近在学习DOM盒子模型,各种属性看着眼花缭乱,下面根据三个系列来分别介绍一下: client系列 clientWidth :width+(padding-left)+(padding-right)->和内容溢出无关系 clientHeight:height+(padding-top)+(padding-bottom)->和内容溢出无关系 clientLeft:左边框的宽度 clientTop:上边框的高度(border[Left/Top]Width) offset系列 offsetParen

javascript基础加固3—-语法2

2.1 JavaScript 语句 2.1.1 if/else 语句 JavaScript 中的 if/else 判断选择,你会发现,就像 C 语言.语法格式是这样的: if (条件 1) { 当条件 1 为 true 时执行的代码; } else if (条件 2) { 当条件 2 为 true 时执行的代码; } else { 当条件 1 和 条件 2 都不为 true 时执行的代码; } 2.1.2 switch/case 语句 在做大量的选择判断的时候,如果依然使用 if/else 结构

javascript基础加固2—-语法1

2.1 变量 2.1.1 什么是变量 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储数据的存储器,每个变量都有其独有的名字,每个变量都占有一段内存. 在程序当中,直接使用数据值或直接使用数据值的内存地址都不够方便,所以我们用变量的名字来表示对应的数据. 每个变量都有它的变量名,变量类型,变量的作用域. 2.1.2 JavaScript 中的变量 JavaScript 中的变量规则和其它如 C.Java 等语言类似,建议的变量命名规则: 1.由字母.数字.下划线组成,区分大小写 2.以字

javascript基础加固4—-事件

2.1 什么是事件 通常鼠标或热键的动作我们称之为 事件(Event),而由鼠标或热键引发的一连串程序的动作,称之为 事件驱动.对事件进行处理程序或函数,我们称之为 事件处理程序. 2.2 事件处理程序 在某个事件发生的时候,执行特定的 JavaScript 代码(事件处理程序). 比如点击页面的某个按钮这是一个很常见的事件,执行对应的事件处理程序,弹出提示小窗口,代码如下: <html> <head> <script> function click_button()

javascript基础加固5—-对象

2.1 什么是对象 JavaScript 的所有数据都可以被视为对象,而每个对象都有其 属性(properties)和 方法(methods). 对象的 属性 是反映该对象某些特定的性质的,例如:字符串的长度.图像的长宽.文字框(Textbox)里的文字等: 对象的 方法 能对该对象做一些事情,例如,表单的"提交"(Submit),窗口的"滚动"(Scrolling)等. 比如当申请一个变量的时候: var my_var="shiyanlou";

JavaScript基础知识(DOM)

获取元素的方法 要操作谁,就要先获取谁: 获取元素 1.document.getElementById:通过ID名来获取元素 兼容性: 在IE8以下,会默认把name属性当做id来获取: document : 文档:上下问必须是document get : 获取 element : 元素 By : 通过 Id : ID名字: id 是唯一的:不能重复 var oBox = document.getElementById("box");// {className:""

JavaScript 基础第七天(DOM的开始)

一.引言 JavaScript的内容分为三个部分,这三个部分分别是ECMAScript.DOM.BOM三个部分组成.所谓ECMAScript就是JavaScript和核心基础语法,DOM是文档对象模型,最后剩下的BOM则是浏览器对象模型.这三个部分相辅相成组成了现在的JavaScript. 二.导入 前面几天我们学习就是有关有ECMAScript即基础语法部分,从今天开始我们将开始接触文档对象模型,做好准备.let's Go! 三.重点内容 ① 什么是DOM: DOM= Document Obj

JavaScript基础--DOM对象加强篇(十四)

1.document 对象 定义:document对象代表的整个html文档,因此可以去访问到文档中的各个对象(元素)document重要的函数 1.1 write 向文档输出文本或js代码 1.2 writeln 向文档输出文本或者js代码,与write不一样的地方是,writeln是换行输出. 比如: document.write("hello");document.writeln("ok"); hello ok 但是对浏览器来看,输出效果没有区别. 1.3 g