一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)

这篇具有很好参考价值的文章主要介绍了一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解),JavaScript,Web专区,javascript,开发语言,ecmascript

一、什么是节点

DOM模型是树状结构模型,二组成这棵树的就是一个个点,在网络术语中称之为节点。
节点是一个模型中最基本的组成单位。DOM模型是由一个个节点组成的,DOM节点也有其不同的类型。

二、节点类型

DOM节点分为5种类型:

  • 文档节点(就是整个HTML文档,也就是document对象)
  • 元素节点
  • 注释节点(在HTML文档中写的注释)
  • 属性节点
  • 文本节点
1、元素节点

我们看到的一个个标签元素在DOM节点树中就是元素节点,它是我们操作节点的核心,即使我们要操作属性节点和文本节点,也要先找到它们的元素节点

DOM中element对象的三个属性:

  • nodeType属性可以显示节点的类型 1表示元素节点 2表示属性节点 3表示文本节点
  • nodeName属性可以显示节点的名字,显示的名字是大写形式
  • nodevalue属性可以显示节点的值,元素节点没有值,显示null

2、属性节点
// 每个标签元素都有自己的一些属性,这些属性就是属性节点。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<h2>让推广显而易见</h2>
<p id="node">没有推广不了的产品</p>
<ul>
    <li>知数网络</li>
    <li>知数SEO</li>
</ul>
</body>
<script>
    var pObj = document.getElementById('node');  // 获取p元素节点
    var p_id = pObj.getAttributeNode('id'); // 获取id属性节点
    console.log(p_id); // 打印p的id属性  node
    var p_id_type = p_id.nodeType; // p元素的节点类型
    console.log(p_id_type); // 打印节点类型 2
    var p_id_name = p_id.name; // p元素节点的名字
    console.log(p_id_name); // id
    var p_id_value = p_id.value; // p元素节点的值
    console.log(p_id_value); // node

</script>
</html>
// 代码中我们使用getAttributeNode()方法获取属性节点,它和getAttribute()方法的区别在于后者得到的属性值而不是对象
3、文本节点
// 我们写在标签中的文本内容就是文本节点,在浏览器中呈现给用户的内容就是一个文本节点。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<h2>让推广显而易见</h2>
<p id="node">没有推广不了的产品</p>
<ul>
    <li>知数网络</li>
    <li>知数SEO</li>
</ul>
</body>
<script>
    var pObj = document.getElementById('node'); // 获取p元素节点
    var p_text = pObj.firstChild;
    console.log(p_text);
    var p_text_type = p_text.nodeType;
    console.log(p_text_type); // 3
    var p_text_name = p_text.nodeName;
    console.log(p_text_name); // #text
    var p_text_value = p_text.nodeValue;
    console.log(p_text_value);  // 没有推广不了的产品

</script>
</html>
4、节点类型、节点名字、节点值
4.1、节点类型

可以通过nodeObject.nodeType属性获取

节点类型 节点说明
元素节点 每个HTML标签就是元素
属性节点 元素节点的属性,如id class name src等
文本节点 元素节点或属性节点的文本内容,如<p>标签内容是文本节点</p>
注释节点 文档的注释
文档节点 整个html文档,DOM树中的根<html>标签
4.2、节点名字

不同DOM节点有不同的名称,可以通过nodeObject.nodeName属性得到节点的名称

节点类型 节点名字
元素节点 HTML标签的名称,大写如<p>元素节点是P
属性节点 属性的名称
文本节点 永远是text
注释节点 永远是#comment
文档节点 永远是#document
4.3、节点值

节点的值可以通过nodeObject.nodeValue属性获取

节点类型 节点的值
元素节点 没有值
属性节点 属性的值就是属性节点的值
文本节点 文本内容就是文本节点的值
注释节点 注释内容就是注释节点的值
文档节点 没有值

三、通过文档对象方法获取节点

我们相操作某个节点,第一步就是获得这个节点。

1、通过id属性获取节点

通过document读喜庆提供的 getElementById() 方法,接收一个标签元素的id属性值,就可以获取到对应id的标签元素

2、通过标签名字获取节点

*getElementsByTagName()*方法

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<h2>让推广显而易见</h2>
<p id="node">没有推广不了的产品</p>
<ul>
    <li>知数网络</li>
    <li>知数SEO</li>
</ul>
</body>
<script>
    var lis = document.getElementsByTagName('li'); // 获取所有li标签元素
    console.log(lis); // 打印li元素集合
    console.log(lis[0]); // 打印第一个li元素

</script>
</html>
// getElementsBytagName()不仅是document对象的方法,也是element对象的方法
3、通过类名获取节点

*getElementsByClassName()*方法

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div>春雨惊春清谷天,</div>
<div class="bgcolor">夏满芒夏暑相连。</div>
<div>秋处露秋寒霜降,</div>
<div class="bgcolor">冬雪雪冬小大寒。</div>
</body>
<script>
    var bgcolors = document.getElementsByClassName('bgcolor');
    console.log(bgcolors);
    console.log(bgcolors[0]);
</script>
</html>
4、通过name属性获取节点

还可以通过表单中的name属性值来获取到指定的input标签元素
*getElementsByName()*方法接受一个name值就可以获取到对应的input标签元素,它返回一个数组,这个数组存放着所有name值等于我们传到函数中的那个值

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<form id="myForm" action="">
    <input type="text" name="username"><br>
    <input type="radio" name="sex" value="男"><br>
    <input type="radio" name="sex" value="女"><br>

</form>
</body>
<script>
    var sex = document.getElementsByName('sex');
    console.log(sex);
    console.log(sex[0]);
</script>
</html>

四、通过层级关系获取节点

HTML文档在浏览器中被解析成DOM树状结构模型,而且这种树状结构模型非常方便我们寻找该节点相关的一些关系,我们可以通过层级关系来找到对应的节点。

1、子节点childNodes
// 一个节点可以有一个或多个子节点,通过DOM提供的方法,我们可以操作这个节点的所有子节点
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content">
    <p>知数</p>
    <span>专注搜索引擎优化和品牌推广</span>
    <p>一个懂技术的seoer</p>
    <a href="https://www.zhishunet.com">知数SEO</a>
</div>
</body>
<script>
    // 获取div标签元素节点对象
    var divobj = document.getElementById('content');
    // 获取该div下的所有子节点
    var childs = divobj.childNodes;
    // 打印获得的所有子节点
    console.log(childs);
    // 打印获得的所有子节点的个数
    console.log(childs.length);
</script>
</html>

// firstChild属性可以获得第一个子节点
// lastChild属性可以获得最后一个子节点
2、父节点parentNode
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content">
    <p>知数</p>
    <span>专注搜索引擎优化和品牌推广</span>
    <p id="p_node">一个懂技术的seoer</p>
    <a href="https://www.zhishunet.com">知数SEO</a>
</div>
</body>
<script>
    // 获取标签元素节点对象
    var p_obj = document.getElementById('p_node');
    // 获取p元素的父节点
    var parent = p_obj.parentNode;
    console.log(parent);
</script>
</html>
3、兄弟节点
// 所谓的兄弟节点就是同级节点 
// nextSibling属性可以获取某个节点的下一个节点
// previousSibling属性可以获取某个节点的上一个节点
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content">
    <p>知数</p>
    <span>专注搜索引擎优化和品牌推广</span>
    <p id="p_node">一个懂技术的seoer</p>
    <a href="https://www.zhishunet.com">知数SEO</a>
</div>
</body>
<script>
    // 获取标签元素节点对象
    var p_obj = document.getElementById('p_node');
    // 获取p元素的下一个节点
    var nextNode = p_obj.nextSibling;
    console.log(nextNode);
</script>
</html>

五、节点的其他操作

1、添加节点
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content"></div>
</body>
<script>
    // 创建一个a元素节点
    var a = document.createElement('a');
    // 设置a元素节点的属性节点
    a.setAttribute('href','https://www.zhishunet.com');
    // 创建新的文本节点
    var text = document.createTextNode('知数SEO');
    // 将文本节点插入到新创建的a元素节点中
    a.appendChild(text);
    // 找到要插入新节点到某个父节点下
    var parent = document.getElementById('content');
    // 向这个父节点尾部插入新创建的节点
    parent.appendChild(a);
</script>
</html>

// 还可以使用createTextNode()方法来创建文本节点 还可以使用textContent属性来设置元素节点的文本内容
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content"></div>
</body>
<script>
    // 创建一个a元素节点
    var a = document.createElement('a');
    // 设置a元素节点的属性节点
    a.setAttribute('href','https://www.zhishunet.com');
    // 设置或修改a元素节点的文本内容
    a.textContent = '知数';
    // 找到要插入新节点到某个父节点下
    var parent = document.getElementById('content');
    // 向这个父节点尾部插入新创建的节点
    parent.appendChild(a);
</script>
</html>

// 还可以使用innerHTML属性来设置或获取元素节点的所有内容
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="content"></div>
</body>
<script>
    // 找到要插入的父节点
    var parent = document.getElementById('content');
    // 向这个目标节点插入需要的内容
    parent.innerHTML = '<a href="https://www.zhishunet.com">知数SEO</a>';
</script>
</html>
2、删除节点
// 删除节点和替换节点有些相似,必须先找到父节点,才能删除这个父节点下的某个子节点
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div>
    <p id="p_node">这个需要删除</p>
    <p>宝剑锋从磨砺出</p>
    <p>梅花香自苦寒来</p>
</div>
</body>
<script>
    // 找到要删除的节点
    var delNode = document.getElementById('p_node');
    // 得到要删除的节点的父节点
    var parent = delNode.parentNode;
    // 通过父节点的removeChiled()方法删除目标节点
    parent.removeChild(delNode);
</script>
</html>
3、修改节点
// 我们可以使用elment对象的replaceChild()方法来替换子节点
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>知数SEO_专注搜索引擎优化和品牌推广</title>
</head>
<body>
<div id="div_node">
    <p>这个需要替换的</p>
    <p>宝剑锋从磨砺出</p>
    <p>梅花香自苦寒来</p>
</div>
</body>
<script>
    // 创建一个a元素
    var a = document.createElement('a');
    // 设置a元素的属性节点
    a.setAttribute('href','https://www.zhishunet.com')
    // 创建新的文本节点
    var text = document.createTextNode('知数SEO')
    // 将文本节点插入到新创建的a元素节点中
    a.appendChild(text);
    // 找到目标父节点div元素节点
    var parent = document.getElementById('div_node');
    // 找到第一个p元素节点
    var oldNode = parent.childNodes[1];
    // 替换内容
    parent.replaceChild(a,oldNode);
</script>
</html>

六、自封装函数库

原始的DOM操作需要很多代码才能得到我们想要的效果,还有就是浏览器的兼容问题。所以我们要写很多代码来解决这些问题,如果每次操作DOM都要写很多重复的代码,就不符合开发的思想(不要重复造轮子)。文章来源地址https://www.toymoban.com/news/detail-815980.html

<script>
// 自定义DOM函数库
function MyDom(obj){
	this.obj = obj; // 设置对象为传递过来的节点对象
	this.getChildList = function(){};  // 获取所有子元素节点的方法
	this.getFirstChild = function(){};  // 获取第一个子元素节点的方法
	this.getLastChild = function(){};  // 获取最后一个子元素节点的方法
	this.getNextNode = function(){};  // 获取下一个元素节点的方法
	this.getPreNode = function(){};  // 获取上一个元素节点的方法
	this.appendChild = function(){}; // 添加子节点的方法
	this.removeChild = function(){};  // 删除元素节点的方法
	this.bind = function(){};  // 绑定事件的方法
	this.html = function(){};  // 获取或者设置元素节点内容的方法
}
</script>

// 也可以先创建一个空对象,然后通过修改她的prototype属性来设置对象的属性和方法
<script>
// 自定义DOM函数库
function MyDom(obj){
	this.obj = obj;
};

MyDom.prototype = {
	this.obj = obj; // 设置对象为传递过来的节点对象
	this.getChildList = function(){};  // 获取所有子元素节点的方法
	this.getFirstChild = function(){};  // 获取第一个子元素节点的方法
	this.getLastChild = function(){};  // 获取最后一个子元素节点的方法
	this.getNextNode = function(){};  // 获取下一个元素节点的方法
	this.getPreNode = function(){};  // 获取上一个元素节点的方法
	this.appendChild = function(){}; // 添加子节点的方法
	this.removeChild = function(){};  // 删除元素节点的方法
	this.bind = function(){};  // 绑定事件的方法
	this.html = function(){};  // 获取或者设置元素节点内容的方法
}
</script>

到了这里,关于一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文读懂Web Component

    您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 由于最近作者在学习微前端, web component 也是其中一大特性,部分微前端框架使用到,也是深入学习了一下相关的知识,分享出来。 Web Component 实际上一系列技术的组合,主要包含

    2024年02月03日
    浏览(21)
  • DOM的节点操作+事件高级+DOM事件流+事件对象

    1.父节点 : node.parentNode        得到的是离元素最近的父级节点 2.子节点 : parentNode.childNodes        所有的子节点 包含元素节点 文本节点等等 parentNode.children        (非标准) 获取所有的子元素节点,实际开发常用 parentNode.firstChild        获取第一个子节点 不管是文本节点

    2024年02月13日
    浏览(27)
  • 一文读懂什么是 Web3 架构

    最近看了一些Web3.0的文章,总结了一些个人的理解: Web3.0 通过区块链基础设施管理用户数据,重构用户和互联网平台之间的关系和交互,重新定义了互联网应用的架构方式和交互模式。 Web 1.0 中,以浏览性的网站(只能看)为代表,如Baidu、搜狐、163等。 Web 2.0 中,以可读

    2024年02月06日
    浏览(30)
  • web前端javaScript笔记——(11)DOM

    属性                                     此事件发生在何时 onabort 图像的加载被中断。 onblur                                   元素失去焦点。 anchange                                 域的内容被改变 onclick  当用户点击某

    2024年01月19日
    浏览(41)
  • 一文搞懂JS-Web-API——DOM

    🌈本系列文章是博主精心整理的面试热点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速建立前端面试知识体系。抓住每一场面试的机会,知己知彼才能百战百胜。直击技术痛点,主动出击,精密打击,这才是面试拿到高薪的秘诀! 本系列订阅 一

    2024年01月17日
    浏览(38)
  • 【JavaScript 】DOM操作快速入门

    目录 1.概述 2.操作 2.1.document对象 2.2.选中元素 2.2.1.get 2.2.2.query 2.3.操作属性 2.4.添加响应 2.5.修改文本 在Web开发中,JavaScript(JS)的DOM(Document Object Model,文档对象模型)是一种用来表示网页文档结构的编程接口。它将整个文档抽象为一个树形结构,每个节点都是文档中的一

    2024年02月06日
    浏览(32)
  • 一文读懂!跨境支付业务详解

    随着全球电子商务的增长,面向进出口贸易的跨境支付应运而生。 据华创微课统计,预计2022年,跨境支付交易总额将突破156万亿美元,跨境服务市场有巨大的发展潜力。 在跨境服务的链路中,支付是关键的一环。 像shopee、亚马逊、阿里巴巴国际、天猫国际、网易考拉等企业

    2024年02月13日
    浏览(26)
  • javaScript:DOM中的CSS操作

      目录 1.style 属性获取元素写在行间的样式 2.getComputedStyle(元素对象,null)可以获取元素的非行间样式  3.案例(定义一个div和按钮,每点击一次按钮div宽度增加) 效果预览图 代码实现            在 JavaScript 中,可以通过 DOM(文档对象模型)操作来访问和修改网页上的 CS

    2024年02月09日
    浏览(27)
  • 【JavaScript】1.4 事件和DOM操作

    在这一节中,我们将讨论JavaScript的两个重要概念:事件和DOM操作。我们将通过实例和代码示例来详细解释这些概念。 JavaScript中的事件和DOM操作是前端开发中不可或缺的重要组成部分,它们为网页提供了丰富的交互性和动态性。事件驱动是JavaScript编程的核心思想之一,通过事

    2024年02月04日
    浏览(29)
  • React 中的 ref 如何操作 dom节点,使输入框获取焦点

    .focus() 获取焦点 当用户点击按钮时, handleClick 函数会被调用,从而将焦点聚焦到文本输入框上。 定义一个名为 handleClick 的函数。当按钮被点击时,这个函数会被调用。在函数内部,我们通过 inputRef.current 获取到 inputRef 引用所指向的 DOM 元素,并调用其 focus 方法,将焦点聚

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包