首页 > 编程语言 >前端必知必会-JavaScript HTML DOM 导航

前端必知必会-JavaScript HTML DOM 导航

时间:2024-12-18 12:28:56浏览次数:5  
标签:DOM 必知 JavaScript innerHTML getElementById HTML document 节点

文章目录


JavaScript HTML DOM 导航

使用 HTML DOM,您可以使用节点关系导航节点树。

DOM 节点

根据 W3C HTML DOM 标准,HTML 文档中的所有内容都是节点:

整个文档都是文档节点
每个 HTML 元素都是元素节点
HTML 元素内的文本是文本节点
每个 HTML 属性都是属性节点(已弃用)
所有注释都是注释节点

DOM HTML 树

使用 HTML DOM,JavaScript 可以访问节点树中的所有节点。

可以创建新节点,并且可以修改或删除所有节点。

节点关系

节点树中的节点彼此具有层次关系。

使用父级、子级和兄弟级术语来描述关系。

在节点树中,顶部节点称为根节点(或根节点)
每个节点只有一个父节点,除了根节点(没有父节点)
一个节点可以有多个子节点
兄弟节点(兄弟姐妹)是具有相同父节点的节点

<html>

<head>
<title>DOM 教程</title>
</head>

<body>
<h1>DOM 第一课</h1>
<p>Hello world!</p>
</body>

</html>

节点树

从上面的 HTML 中您可以看到:

<html> 是根节点
<html> 没有父节点
<html><head><body> 的父节点
<head><html> 的第一个子节点
<body><html> 的最后一个子节点
并且:

<head> 有一个子节点:<title>
<title> 有一个子节点(文本节点):“DOM 教程”
<body> 有两个子节点:<h1><p>
<h1> 有一个子节点: “DOM Lesson one”
<p> 有一个子节点:“Hello world!”
<h1><p> 是兄弟节点

在节点之间导航

您可以使用以下节点属性通过 JavaScript 在节点之间导航:

parentNode
childNodes[nodenumber]
firstChild
lastChild
nextSibling
previousSibling

子节点和节点值

DOM 处理中的一个常见错误是期望元素节点包含文本。

示例:

<title id="demo">DOM Tutorial</title>

元素节点 <title>(在上面的示例中)不包含文本。

它包含一个值为“DOM Tutorial”的文本节点。

可以通过节点的 innerHTML 属性访问文本节点的值:

myTitle = document.getElementById("demo").innerHTML;

访问 innerHTML 属性与访问第一个子元素的 nodeValue 相同:

myTitle = document.getElementById("demo").firstChild.nodeValue;

访问第一个子元素也可以这样进行:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

以下所有 (3) 个示例均检索 <h1> 元素的文本并将其复制到 <p> 元素中:

示例

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

示例

<html>
<body>

<h1 id="id01">我的第一页</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

示例

<html>
<body>

<h1 id="id01">我的第一页</h1>
<p id="id02">你好!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

InnerHTML

用 innerHTML 属性检索 HTML 元素的内容。

但是,学习上述其他方法对于理解树结构和 DOM 的导航很有用。

DOM 根节点

有两个特殊属性允许访问完整文档:

document.body - 文档的正文

document.documentElement - 完整文档
示例

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>显示 document.body</p>

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

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

示例

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>显示 document.documentElement</p>

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

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

nodeName 属性

nodeName 属性指定节点的名称。

nodeName 是只读的

元素节点的 nodeName 与标签名称相同
属性节点的 nodeName 是属性名称
文本节点的 nodeName 始终为 #text
文档节点的 nodeName 始终为 #document
示例

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

注意:nodeName 始终包含 HTML 元素的大写标签名称。

nodeValue 属性

nodeValue 属性指定节点的值。

元素节点的 nodeValue 为 null
文本节点的 nodeValue 是文本本身
属性节点的 nodeValue 是属性值

nodeType 属性

nodeType 属性是只读的。它返回节点的类型。

示例

<h1 id="id01">我的第一页</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

最重要的 nodeType 属性是:

节点类型示例
ELEMENT_NODE1<h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE2class = “heading”(已弃用)
TEXT_NODE3W3Schools
COMMENT_NODE8<!-- 这是一条注释 -->
DOCUMENT_NODE9HTML 文档本身(<html> 的父级)
DOCUMENT_TYPE_NODE10<!Doctype html>

总结

本文介绍了JavaScript HTML DOM 导航的使用,如有问题欢迎私信和评论

标签:DOM,必知,JavaScript,innerHTML,getElementById,HTML,document,节点
From: https://blog.csdn.net/qq_24018193/article/details/144459383

相关文章

  • 前端必知必会-JavaScript HTML DOM 元素(节点)
    文章目录JavaScriptHTMLDOM元素(节点)添加和删除节点(HTML元素)创建新的HTML元素(节点)创建新的HTML元素-insertBefore()删除现有HTML元素删除子节点替换HTML元素总结JavaScriptHTMLDOM元素(节点)添加和删除节点(HTML元素)创建新的HTML元素(节点)要向HT......
  • 前端必知必会-JavaScript HTML DOM 集合
    文章目录JavaScriptHTMLDOM集合HTMLCollection对象HTMLHTMLCollection长度总结JavaScriptHTMLDOM集合HTMLCollection对象getElementsByTagName()方法返回HTMLCollection对象。HTMLCollection对象是HTML元素的数组式列表(集合)。以下代码选择文档......
  • JavaScript中的var、let和const:变量声明的演变与最佳实践
    在JavaScript中,变量声明是编程的基础。随着ECMAScript6(ES6)的发布,引入了let和const关键字,使得变量声明更加灵活和安全。本文将探讨var、let和const的区别,并通过示例代码展示它们的用法。1.var关键字var是JavaScript中最古老的变量声明方式。它的作用域是函数作用域或全......
  • 深入理解 Node.js 模块系统:构建高效、可维护的 JavaScript 代码
    摘要:Node.js的模块系统是其强大功能的核心之一,它允许开发者将代码组织成模块化的结构,从而提高代码的可维护性和重用性。本文将深入探讨Node.js模块系统的各个方面,包括模块概述、成员导出与导入、ModuleWrapperFunction以及Node.js内置模块,帮助你更好地理解和利用这......
  • Drag and Drop API 实现 JavaScript 中的原生拖放功能
    理解什么是拖放,我们先做个简单的实验。鼠标移动到页面左上角“CSDN”图片上方,点击左键不放开,拖动鼠标,发现图片随着鼠标移动,松开鼠标时,图片消失。一、拖放(DragandDrop)有什么作用?在JavaScript中,拖放(DragandDrop)是一种用户界面交互模式,允许用户通过鼠标选择、拖动和......
  • nis客户端开启ypbind失败 ldap ypbind[5270]: NIS server for domain domain is not r
    nis客户端开启ypbind失败Dec1715:31:03ldapypbind[5270]:NISserverfordomainanykaisnotrespon报错解释:这条日志信息来自于一个尝试使用NIS(网络信息服务)进行域名为anyka的用户查询,但是NIS服务器没有响应。ypbind是用来绑定到NIS域的工具,它会尝试绑定到指定的NIS服务......
  • random file
    下面是对这个问题进行深入分析后的一种思考和可能的解决方向(并非最终定稿答案,仅为参考思路)。问题本身需要在每次操作(插入或删除一条鱼)后,求出当前鱼群中在最优策略下最多能产生的危险打斗次数。问题重述:我们有一个动态维护的鱼群集合,每条鱼有一个重量(a_i)。打斗规则为:每一轮......
  • JavaScript的对象相关概念
    当然可以,以下是将上述对话整理成Markdown格式的内容:JavaScript面向对象编程相关概念原型链(PrototypeChain)原型链是JavaScript中查找对象属性和方法的机制。它从对象的__proto__属性开始,向上逐层搜索直到找到属性或方法或到达Object.prototype。原型(Prototype)每个Java......
  • javascript-函数
    1.函数如果没有return语句会返回undefined8.1.2函数表示[3,2,1].sort(function(a,b){returna-b;};//函数作为另一个函数的参数lettensquared=(function(x){returnx*x;}(10));//立即执行8.1.3Arrowfunctions使用=>区分参数和函数体,不使用function关键字定义函数,也不需要函数......
  • 使用 JavaScript 进行验证码图片识别
    我们可以使用Node.js环境下的一些库来进行验证码的图像处理和识别,常用的库有sharp(图像处理)和tesseract.js(OCR文字识别)。以下是一个实现验证码识别的基本示例。安装依赖首先,确保你已经安装了Node.js和npm(Node包管理器)。然后在项目目录中安装所需的库:bashnpminit-yn......